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!