Cara Menghitung Waktu Relatif
di C#
Saat bekerja dengan tanggal dan waktu di C#, Anda mungkin merasa perlu untuk mengungkapkan berapa banyak waktu yang telah berlalu sejak suatu kejadian tertentu. Ini dapat meningkatkan pengalaman pengguna dengan menampilkan waktu dalam format yang mudah dipahami, seperti “2 jam yang lalu” atau “sebulan yang lalu”. Dalam posting ini, kita akan menjelajahi cara untuk menerapkan fungsionalitas ini menggunakan kelas DateTime
dan TimeSpan
di C#.
Konsep Waktu Relatif
Waktu relatif mengacu pada pengungkapan waktu yang berlalu sejak suatu kejadian tertentu dalam bahasa yang mudah dipahami. Alih-alih menunjukkan cap waktu yang tepat, menampilkan waktu seperti “3 hari yang lalu” atau “kemarin” membuatnya lebih mudah bagi pengguna untuk memahami waktu yang berlalu tanpa perlu melakukan perhitungan mental.
Menerapkan Waktu Relatif di C#
Berikut adalah cara untuk menghitung waktu relatif menggunakan nilai DateTime
di C#:
Langkah 1: Mendefinisikan Konstanta untuk Interval Waktu
Pertama, Anda perlu menetapkan konstanta yang mewakili berbagai interval waktu. Ini membuat kode Anda lebih bersih dan lebih mudah dipahami.
const int DETIK = 1;
const int MENIT = 60 * DETIK;
const int JAM = 60 * MENIT;
const int HARI = 24 * JAM;
const int BULAN = 30 * HARI;
Langkah 2: Menghitung TimeSpan
Untuk menentukan berapa banyak waktu yang telah berlalu, hitung TimeSpan
antara waktu saat ini dan DateTime
yang diberikan.
var ts = new TimeSpan(DateTime.UtcNow.Ticks - yourDate.Ticks);
double delta = Math.Abs(ts.TotalSeconds);
Langkah 3: Menentukan Format Waktu yang Tepat
Dengan TimeSpan
yang dihitung, Anda sekarang dapat menentukan bagaimana cara memformat waktu relatif dengan menggunakan pernyataan kondisional.
Berikut cara mengembalikan string yang sesuai berdasarkan interval yang berbeda:
if (delta < 1 * MENIT)
return ts.Seconds == 1 ? "satu detik yang lalu" : ts.Seconds + " detik yang lalu";
if (delta < 2 * MENIT)
return "satu menit yang lalu";
if (delta < 45 * MENIT)
return ts.Minutes + " menit yang lalu";
if (delta < 90 * MENIT)
return "satu jam yang lalu";
if (delta < 24 * JAM)
return ts.Hours + " jam yang lalu";
if (delta < 48 * JAM)
return "kemarin";
if (delta < 30 * HARI)
return ts.Days + " hari yang lalu";
if (delta < 12 * BULAN)
{
int bulan = Convert.ToInt32(Math.Floor((double)ts.Days / 30));
return bulan <= 1 ? "satu bulan yang lalu" : bulan + " bulan yang lalu";
}
else
{
int tahun = Convert.ToInt32(Math.Floor((double)ts.Days / 365));
return tahun <= 1 ? "satu tahun yang lalu" : tahun + " tahun yang lalu";
}
Pemikiran Akhir
Potongan kode di atas memungkinkan Anda untuk secara efektif menghitung dan menampilkan waktu relatif dengan cara yang sederhana. Ketika Anda menerapkannya dalam aplikasi C# Anda, Anda dapat meningkatkan kemudahan penggunaannya dengan membuat referensi tanggal lebih terkait dengan pengguna.
Sekarang Anda dilengkapi dengan cara praktis untuk meningkatkan aplikasi Anda dengan tampilan waktu relatif. Selamat coding!