JavaScript Development Space

Convert Seconds to Time Format in JavaScript

During development, we often deal with time values returned from backend services in seconds (e.g., 45000 seconds). To enhance readability, we convert these values into a more human-friendly format, such as 12:30:00 or 12 hours 30 minutes 00 seconds. This is useful for scenarios like timers, task durations, and video playback time displays.

This article introduces methods to convert seconds into two common formats: HH:MM:SS and HH hours MM minutes SS seconds using JavaScript.

1. Convert Seconds to "HH hours MM minutes SS seconds" Format

First, we create a function that transforms seconds into a structured format, ensuring zero-padding where necessary.

Implementation:

js
1 const formatSeconds = (seconds) => {
2 if (isNaN(seconds) || seconds < 0) return "00 hours 00 minutes 00 seconds";
3
4 let secondTime = parseInt(seconds);
5 let minuteTime = Math.floor(secondTime / 60);
6 let hourTime = Math.floor(minuteTime / 60);
7
8 secondTime %= 60;
9 minuteTime %= 60;
10
11 return `${hourTime.toString().padStart(2, '0')} hours ` +
12 `${minuteTime.toString().padStart(2, '0')} minutes ` +
13 `${secondTime.toString().padStart(2, '0')} seconds`;
14 };
15
16 // Test
17 console.log(formatSeconds(45000)); // Output: 12 hours 30 minutes 00 seconds

Code Analysis:

  • Time conversion: Extracts hours, minutes, and seconds from total seconds.
  • Zero padding: Ensures values always have two digits for consistency.
  • Readable formatting: Constructs a well-structured output string.

2. Convert Seconds to "HH:MM:SS" Format

Another widely used format separates hours, minutes, and seconds with colons (:), making it suitable for digital clocks and video players.

Implementation:

js
1 const getSeconds = (seconds) => {
2 if (isNaN(seconds) || seconds < 0) return "00:00:00";
3
4 let secondTime = parseInt(seconds);
5 let minuteTime = Math.floor(secondTime / 60);
6 let hourTime = Math.floor(minuteTime / 60);
7
8 secondTime %= 60;
9 minuteTime %= 60;
10
11 return `${hourTime.toString().padStart(2, '0')}:` +
12 `${minuteTime.toString().padStart(2, '0')}:` +
13 `${secondTime.toString().padStart(2, '0')}`;
14 };
15
16 // Test
17 console.log(getSeconds(45000)); // Output: 12:30:00

Code Analysis:

  • Same conversion logic as formatSeconds but uses : as the separator.
  • Zero padding ensures a consistent display (e.g., 08:03:09).

3. Optimized Universal Conversion Function

To improve maintainability and avoid code duplication, we can consolidate the logic into a single function with customizable formatting options.

Implementation:

js
1 const convertTime = (seconds, format = "colon") => {
2 if (isNaN(seconds) || seconds < 0) return format === "colon" ? "00:00:00" : "00 hours 00 minutes 00 seconds";
3
4 let secondTime = parseInt(seconds);
5 let minuteTime = Math.floor(secondTime / 60);
6 let hourTime = Math.floor(minuteTime / 60);
7
8 secondTime %= 60;
9 minuteTime %= 60;
10
11 if (format === "colon") {
12 return `${hourTime.toString().padStart(2, '0')}:` +
13 `${minuteTime.toString().padStart(2, '0')}:` +
14 `${secondTime.toString().padStart(2, '0')}`;
15 } else {
16 return `${hourTime.toString().padStart(2, '0')} hours ` +
17 `${minuteTime.toString().padStart(2, '0')} minutes ` +
18 `${secondTime.toString().padStart(2, '0')} seconds`;
19 }
20 };
21
22 // Tests
23 console.log(convertTime(45000, "colon")); // Output: 12:30:00
24 console.log(convertTime(45000, "text")); // Output: 12 hours 30 minutes 00 seconds

Optimizations:

  • Custom format selection: Allows flexible output.
  • Code reuse: Eliminates duplicate logic.
  • Validation: Ensures input is a valid number.

4. Additional Examples

Example 1: Convert User Input Seconds

js
1 const userSeconds = prompt("Enter seconds:");
2 console.log(convertTime(parseInt(userSeconds), "colon"));

Example 2: Display Countdown Timer

js
1 const startCountdown = (totalSeconds) => {
2 let interval = setInterval(() => {
3 console.log(convertTime(totalSeconds, "colon"));
4 if (totalSeconds <= 0) clearInterval(interval);
5 totalSeconds--;
6 }, 1000);
7 };
8
9 startCountdown(15); // Starts a countdown from 15 seconds

5. Application Scenarios

  • Timers: Countdown or elapsed time tracking.
  • Video Players: Display playback progress.
  • Task Durations: Show processing times.
  • Log Systems: Track system uptime or request durations.

6. Conclusion

This article covered multiple ways to convert seconds into human-readable time formats in JavaScript. We provided:

  • Two formatting functions: HH:MM:SS and HH hours MM minutes SS seconds.
  • An optimized function for flexible conversions.
  • Practical usage examples, including a countdown timer.

This approach enhances code maintainability, user experience, and readability in various applications.

JavaScript Development Space

© 2025 JavaScript Development Space - Master JS and NodeJS. All rights reserved.