Pertimbangkan kode ini (diisi dengan contoh):
DateTime dt1 = DateTime.Parse("7/30/2010 9:33:29.1234567 AM");
DateTime dt2 = DateTime.Parse("6/30/2010 9:33:00.7654321 AM");
TimeSpan ts = dt1 - dt2;
Console.WriteLine(string.Format( "{0:d.hh:mm:ss.ff}", ts ));
Ini mewakili sepotong kode yang telah saya kerjakan setidaknya sejak .NET 1.1.
Ini berfungsi dengan baik di 1.1 hingga 3.5 dengan output berikut (untuk input tiruan ini):
30.00:00:28.3580246
Tapi sekarang saya melihatnya mati di .NET 4 dengan pesan kesalahan:
Input string was not in a correct format.
Jadi seolah-olah .NET 4 tiba-tiba memutuskan tidak menyukai format ini karena perbedaan waktu. Mengubah jalur menjadi, katakanlah
Console.WriteLine(string.Format( "{0}", ts.ToString("d.hh:mm:ss.ff") ));
memiliki efek yang sama.
Sekarang hal yang saya perhatikan adalah jika saya melakukan .ToString()
default saya mendapatkan hasil yang sama. Saya yakin proses pemikirannya adalah bahwa ini adalah polis asuransi terhadap perubahan format default di versi mendatang. Tapi sekarang sepertinya itu bukan pilihan.
Adakah yang tahu mengapa hal ini berubah dan apakah saya melakukan kesalahan atau apakah ada cara praktik terbaik untuk melakukan apa yang ingin saya capai?