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:
1 const formatSeconds = (seconds) => {2 if (isNaN(seconds) || seconds < 0) return "00 hours 00 minutes 00 seconds";34 let secondTime = parseInt(seconds);5 let minuteTime = Math.floor(secondTime / 60);6 let hourTime = Math.floor(minuteTime / 60);78 secondTime %= 60;9 minuteTime %= 60;1011 return `${hourTime.toString().padStart(2, '0')} hours ` +12 `${minuteTime.toString().padStart(2, '0')} minutes ` +13 `${secondTime.toString().padStart(2, '0')} seconds`;14 };1516 // Test17 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:
1 const getSeconds = (seconds) => {2 if (isNaN(seconds) || seconds < 0) return "00:00:00";34 let secondTime = parseInt(seconds);5 let minuteTime = Math.floor(secondTime / 60);6 let hourTime = Math.floor(minuteTime / 60);78 secondTime %= 60;9 minuteTime %= 60;1011 return `${hourTime.toString().padStart(2, '0')}:` +12 `${minuteTime.toString().padStart(2, '0')}:` +13 `${secondTime.toString().padStart(2, '0')}`;14 };1516 // Test17 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:
1 const convertTime = (seconds, format = "colon") => {2 if (isNaN(seconds) || seconds < 0) return format === "colon" ? "00:00:00" : "00 hours 00 minutes 00 seconds";34 let secondTime = parseInt(seconds);5 let minuteTime = Math.floor(secondTime / 60);6 let hourTime = Math.floor(minuteTime / 60);78 secondTime %= 60;9 minuteTime %= 60;1011 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 };2122 // Tests23 console.log(convertTime(45000, "colon")); // Output: 12:30:0024 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
1 const userSeconds = prompt("Enter seconds:");2 console.log(convertTime(parseInt(userSeconds), "colon"));
Example 2: Display Countdown Timer
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 };89 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
andHH 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.