Untuk .Net <= 4.0 Gunakan kelas TimeSpan.
TimeSpan t = TimeSpan.FromSeconds( secs );
string answer = string.Format("{0:D2}h:{1:D2}m:{2:D2}s:{3:D3}ms",
t.Hours,
t.Minutes,
t.Seconds,
t.Milliseconds);
(Seperti dicatat oleh Inder Kumar Rathore) Untuk .NET> 4.0 Anda dapat menggunakan
TimeSpan time = TimeSpan.FromSeconds(seconds);
//here backslash is must to tell that colon is
//not the part of format, it just a character that we want in output
string str = time .ToString(@"hh\:mm\:ss\:fff");
(Dari Nick Molyneux) Pastikan bahwa detik kurang dari TimeSpan.MaxValue.TotalSeconds
untuk menghindari pengecualian.
using System;
Kelas berada diSystem.TimeSpan
.Untuk .NET> 4.0 dapat Anda gunakan
atau jika Anda ingin format waktu tanggal maka Anda juga dapat melakukan ini
Untuk lebih lanjut Anda dapat memeriksa String Format TimeSpan Kustom
sumber
HH
tidak valid di sana..NET/C#
.ToString(@"hh\:mm\:ss\:fff");
sudah dalam24hr
format.HH
tidak valid di sana dengan input seperti itu ( kesalahannya adalahInput string was not in a correct format.
)Jika Anda tahu Anda memiliki beberapa detik, Anda dapat membuat nilai TimeSpan dengan memanggil TimeSpan.FromSeconds:
Anda kemudian dapat memperoleh jumlah hari, jam, menit, atau detik. Atau gunakan salah satu kelebihan ToString untuk menampilkannya dengan cara apa pun yang Anda suka.
sumber
Saya melakukan beberapa tolok ukur untuk melihat apa cara tercepat dan ini adalah hasil dan kesimpulan saya. Saya menjalankan setiap metode 10 juta kali dan menambahkan komentar dengan waktu rata-rata per lari.
Jika input milidetik Anda tidak terbatas pada satu hari (hasil Anda mungkin 143: 59: 59,999), ini adalah opsi, dari yang lebih cepat ke yang lebih lambat:
Jika input milidetik Anda terbatas pada satu hari (hasil Anda tidak akan pernah lebih besar dari 23: 59: 59,999), ini adalah opsi, dari yang lebih cepat ke yang lebih lambat:
Jika input Anda hanya beberapa detik , metode ini sedikit lebih cepat. Sekali lagi, jika input detik Anda tidak terbatas pada satu hari (hasil Anda mungkin 143: 59: 59):
Dan jika input detik Anda terbatas pada satu hari (hasil Anda tidak akan pernah lebih besar dari 23:59:59):
Sebagai komentar terakhir, izinkan saya menambahkan bahwa saya melihat bahwa
string.Format
sedikit lebih cepat jika Anda menggunakanD2
bukan00
.sumber
http://msdn.microsoft.com/en-us/library/system.timespan.fromseconds.aspx
sumber
Konstruktor TimeSpan memungkinkan Anda untuk lulus dalam hitungan detik. Cukup mendeklarasikan variabel tipe TimeSpan jumlah detik. Ex:
sumber
Saya sarankan Anda menggunakan
TimeSpan
kelas untuk ini.Keluaran:
sumber
Di VB.NET, tetapi sama di C #:
sumber
Untuk .NET <4.0 (mis: Unity ) Anda dapat menulis metode ekstensi untuk memiliki
TimeSpan.ToString(string format)
perilaku seperti .NET> 4.0Dan dari mana saja dalam kode Anda, Anda dapat menggunakannya seperti:
Dengan cara ini Anda dapat memformat
TimeSpan
objek apa pun dengan hanya memanggil ToString dari mana pun kode Anda.sumber
Mengapa orang membutuhkan TimeSpan DAN DateTime jika kita memiliki DateTime.AddSeconds ()?
Tanggal arbitrer. totalSeconds bisa lebih besar dari 59 dan itu adalah dobel. Kemudian Anda dapat memformat waktu Anda seperti yang Anda inginkan menggunakan DateTime.ToString ():
Ini tidak berfungsi jika totalSeconds <0 atau> 59:
sumber
//Uji
sumber
untuk mendapatkan total detik
dan untuk mendapatkan datetime dari detik
sumber
Ini akan kembali dalam format jj: mm: dd
sumber
ConvertTime(80)
pengembalian0:1:20
danConvertTime(61)
pengembalian0:1:1
, keduanyah:m:s
. Menggunakan interpolasi string juga menghasilkan kode yang lebih panjang daripadaToString()
, seperti yang digunakan dalam jawaban lain, dan juga membuatnya lebih sulit untuk memvisualisasikan panjang string yang diformat.