Hanya ingin tahu, apakah ada format string yang dapat saya gunakan untuk menghasilkan sesuatu seperti "5h 3m 30s"?
misalnya. (jelas salah)
myTimeSpan.ToString("hh mm ss")
Mencoba:
myTimeSpan.ToString("h'h 'm'm 's's'")
(Perhatikan bahwa bahkan spasi perlu dikutip - itulah yang salah dengan upaya pertama saya.)
Saya berasumsi Anda menggunakan .NET 4, tentu saja - sebelum itu, TimeSpan
tidak mendukung string format khusus.
EDIT: Seperti disebutkan, ini tidak akan bekerja lebih dari 24 jam. Perhatikan juga bahwa alternatif juga tersedia melalui Waktu Noda :)
Waspadai ini saat menggunakan jawaban dari Jon Skeet, dengan kode seperti ini:
Anda mendapatkan hasil seperti ini:
Format jam maksimal tayang 23 jam. Itu tidak akan menunjukkan 27 jam atau mengubah 12 hari menjadi jam, itu hanya akan memotongnya seolah-olah mereka tidak pernah ada.
Salah satu cara untuk memperbaikinya adalah dengan membuat ekstensi yang memeriksa panjang TimeSpan dan membuat pemformatan berdasarkan apakah rentang waktu lebih dari satu tahun, hari, dll. Atau Anda juga bisa selalu menunjukkan hari karena tidak pernah terputus:
Perhatikan bahwa saya seorang pemula dalam pemrograman. Ini hanya datang dari pengamatan setelah saya cukup beruntung untuk memperhatikan ini setelah berasumsi itu akan muncul sepanjang waktu. Saya mengatakan ini karena saya tidak tahu apakah ada solusi yang lebih baik, seperti format jam lain yang dapat menampilkan jam tanpa akhir.
Namun saya pikir format ini melakukan fungsi yang dimaksudkan. Anda hanya harus menyadarinya. Demikian postingan ini. Jawaban Jon Skeet tidak pernah menunjukkan bahwa format ini hanya menampilkan properti jam dari format tipe tanggal di mana jam bisa maksimal 23.
sumber
TotalHours
dll di TimeSpan. Anda mungkin menginginkan iniMath.Floor(span.TotalHours) + span.ToString("'h 'm'm 's's'")
Jika Anda kurang beruntung karena tidak menggunakan .NET4:
sumber
TotalHours
ini masih merupakan cara yang tepat bahkan di versi .net yang lebih baru.TotalHours
, karena itu adalahdouble
, bukanint
sejenisnyaHours
, yaitu itu akan menunjukkan pecahan jam dan juga seluruh jam.bagaimana dengan konsentrasi:
UPDATE 1:
Anda dapat menghindarinya dengan kutipan tunggal:
h'h 'm'm 's's'
sumber
Hours
,Minutes
,Seconds
sifat IMO. Saya pribadi lebih suka menggunakan string format kustom, setelah mencari tahu kutipannya.Kode kecil ini membantu, untuk mengurai dan membalikkan kembali:
Referensi untuk parse rentang waktu
sumber
Menggunakan
Xamarin
dan.NET Portable 4.5
ini adalah satu-satunya format yang saya kerjakan setelah mencoba semua jawaban lain di sini:Pada dasarnya saya memasukkan
:
tanda kutip tunggal untuk menghindarinya.sumber
Kadang-kadang saya menemukan string format sedikit seperti regex, ketika saya kembali ke kode nanti, saya lupa nuansanya. Oleh karena itu, saya menggunakan yang berikut ini, yang cenderung tidak mengirim saya kembali dokumentasi:
Interpolasi string, yang diperkenalkan di C # 6, membuat ini jauh lebih jelas daripada yang seharusnya.
sumber