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.

About Yuniar

Penulis sekarang lebih banyak bekerja menggunakan teknologi Microsoft .NET secara umum dan TIDAK lagi menggunakan aplikasi MapXtreme.net dari MapInfo. Karena itu mohon maaf, jika pertanyaan-pertanyaan mengenai MapXtreme sudah tidak bisa saya jawab lagi.

Posted on 12 Januari 2011, in .NET and tagged , . Bookmark the permalink. Tinggalkan komentar.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: