What is the best way to convert seconds into (Hour:Minutes:Seconds:Milliseconds) time in C#?

Converting seconds to a formatted time string in the format Hour:Minutes:Seconds:Milliseconds is a common requirement in C# applications. The most efficient approach is using the TimeSpan structure, which provides built-in methods for time calculations and formatting.

TimeSpan Structure

TimeSpan represents a time interval and provides properties like Hours, Minutes, Seconds, and Milliseconds for easy access to time components. The TimeSpan.FromSeconds() method creates a TimeSpan object from a given number of seconds.

Syntax

Following is the syntax for converting seconds using TimeSpan.FromSeconds()

TimeSpan timeSpan = TimeSpan.FromSeconds(totalSeconds);
string formatted = string.Format("{0:D2}h:{1:D2}m:{2:D2}s:{3:D3}ms",
    timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds, timeSpan.Milliseconds);

TimeSpan Conversion Process Seconds 3752 ? TimeSpan FromSeconds() ? Formatted Time 01h:02m:32s:000ms Properties: Hours, Minutes, Seconds, Milliseconds

Using TimeSpan.FromSeconds() Method

Example with Large Number of Seconds

using System;

class Program {
    static void Main(string[] args) {
        TimeSpan t = TimeSpan.FromSeconds(3752);
        string answer = string.Format("{0:D2}h:{1:D2}m:{2:D2}s:{3:D3}ms",
            t.Hours,
            t.Minutes,
            t.Seconds,
            t.Milliseconds);
        Console.WriteLine("Converting 3752 seconds:");
        Console.WriteLine(answer);
    }
}

The output of the above code is −

Converting 3752 seconds:
01h:02m:32s:000ms

Example with Small Number of Seconds

using System;

class Program {
    static void Main(string[] args) {
        TimeSpan t = TimeSpan.FromSeconds(6);
        string answer = string.Format("{0:D2}h:{1:D2}m:{2:D2}s:{3:D3}ms",
            t.Hours,
            t.Minutes,
            t.Seconds,
            t.Milliseconds);
        Console.WriteLine("Converting 6 seconds:");
        Console.WriteLine(answer);
    }
}

The output of the above code is −

Converting 6 seconds:
00h:00m:06s:000ms

Using ToString() Method for Formatting

Example

using System;

class Program {
    static void Main(string[] args) {
        TimeSpan t1 = TimeSpan.FromSeconds(3661);
        TimeSpan t2 = TimeSpan.FromSeconds(125.5);
        
        // Using ToString with custom format
        Console.WriteLine("Method 1 - ToString():");
        Console.WriteLine("3661 seconds: " + t1.ToString(@"hh\h\:mm\m\:ss\s"));
        Console.WriteLine("125.5 seconds: " + t2.ToString(@"hh\h\:mm\m\:ss\s\.fff\m\s"));
        
        // Using string.Format for consistency with milliseconds
        Console.WriteLine("\nMethod 2 - string.Format():");
        Console.WriteLine(string.Format("{0:D2}h:{1:D2}m:{2:D2}s:{3:D3}ms", 
            t1.Hours, t1.Minutes, t1.Seconds, t1.Milliseconds));
        Console.WriteLine(string.Format("{0:D2}h:{1:D2}m:{2:D2}s:{3:D3}ms", 
            t2.Hours, t2.Minutes, t2.Seconds, t2.Milliseconds));
    }
}

The output of the above code is −

Method 1 - ToString():
3661 seconds: 01h:01m:01s
125.5 seconds: 00h:02m:05s.500ms

Method 2 - string.Format():
01h:01m:01s:000ms
00h:02m:05s:500ms

Comparison of Formatting Methods

Method Advantages Best Use Case
TimeSpan.FromSeconds() + string.Format() Precise control over format, consistent padding When you need exact HH:MM:SS:MMM format
TimeSpan.ToString() with custom format More concise code, built-in formatting When standard time formats are acceptable

Conclusion

The TimeSpan.FromSeconds() method combined with string.Format() provides the most reliable way to convert seconds into Hour:Minutes:Seconds:Milliseconds format. This approach ensures consistent zero-padding and handles fractional seconds properly, making it ideal for precise time display requirements.

Updated on: 2026-03-17T07:04:36+05:30

5K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements