Menghitung Interval Waktu di C#
Di bahasa VB.net, DateDiff digunakan untuk menghitung interval hari, jam, menit dan detik antara dua waktu. Namun fungsi ini tidak tersedia di C#. Ketika sedang ‘otak-atik’ C#, saya menemui kesulitan ketika harus menghitung interval antara dua waktu. Setelah bertanya-tanya ke Om Google dan mencoba beberapa kode akhirnya saya mendapatkan pengganti dari fungsi DateDiff ini yaitu: TimeSpan
Saya membuat contoh kode berikut dalam VB.net:
Dim awal As DateTime = New DateTime(2010, 12, 1, 12, 13, 9) Dim akhir As DateTime = New DateTime(2011, 1, 12, 13, 22, 10) Dim dd As Double = DateDiff(DateInterval.Second, awal, akhir) Console.WriteLine("awal : " & awal.ToString("dd/MM/yyyy HH:mm:ss")) Console.WriteLine("akhir : " & akhir.ToString("dd/MM/yyyy HH:mm:ss")) Console.WriteLine("selisih jam: " & DateDiff(DateInterval.Hour, awal, akhir)) Console.WriteLine("selisih menit: " & DateDiff(DateInterval.Minute, awal, akhir)) Console.WriteLine("selisih detik : " & DateDiff(DateInterval.Second, awal, akhir)) Console.WriteLine("HH:mm:ss --> " & ((dd - (dd Mod 3600)) / 3600 & ":" & (((dd - (dd Mod 60))) / 60) Mod 60 & ":" & (dd Mod 60)))
Hasilnya seperti gambar berikut:
Lalu bagaimana dengan C#? Saya mengubah kode diatas menjadi C# dan menggunakan TimeSpan.
DateTime awal = new DateTime(2010, 12, 1, 12, 13, 9); DateTime akhir = new DateTime(2011, 1, 12, 13, 22, 10); TimeSpan span = akhir.Subtract(awal); double d1 = span.TotalSeconds; Console.WriteLine("awal : " + awal.ToString("dd/MM/yyyy HH:mm:ss")); Console.WriteLine("akhir : " + akhir.ToString("dd/MM/yyyy HH:mm:ss")); Console.WriteLine("selisih hari: " + span.TotalDays); Console.WriteLine("selisih jam: " + span.TotalHours); Console.WriteLine("selisih menit: " + span.TotalMinutes); Console.WriteLine("selisih detik : " + span.TotalSeconds); Console.WriteLine("HH:mm:ss --> " + ((d1 - (d1 % 3600)) / 3600 + ":" + (((d1 - (d1 % 60))) / 60) % 60 + ":" + (d1 % 60)));
hasilnya:
Jika diperhatikan, ada sedikit perbedaan dalam hal ketelitian ketika menggunakan DateDiff dan TimeSpan, tetapi hasil akhirnya (dalam jam:menit:detik) tetap sama. Dan ini sesuai dengan yang saya butuhkan.
Tambahan:
Sebenarnya dengan TimeSpan, untuk mendapatkan selisih jam, menit detik tidak perlu repot-repot menghitung total detik dengan rumus di code diatas. Cukup dengan kode
Span.ToString()
akan mendapatkan hasil dengan format day.HH:mm:ss.
Semoga bermanfaat. Happy coding.
Posted on 12 Januari 2011, in .NET and tagged .NET, C#. Bookmark the permalink. Tinggalkan komentar.
Tinggalkan komentar
Comments 0