Tidak semua kebutuhan waktu membutuhkan momen lengkap. Jadwal kerja bergantian hanya peduli jam, sedangkan tanggal ulang tahun hanya peduli tanggal. Menyimpan keduanya sebagai DateTime memaksa kita mengangkut komponen palsu: ulang tahun tersimpan sebagai 17 Agustus 00:00, dan jam kerja tersimpan sebagai tanggal yang tidak bermakna. Sejak .NET 6, struct DateOnly dan TimeOnly menyelesaikan masalah ini dengan tipe yang murni.
Kapan Memakai yang Mana #
| Kebutuhan | Tipe | Contoh nilai |
|---|---|---|
| Tanggal kalender murni | DateOnly | 17 Agustus 2025 |
| Jam dalam satu hari | TimeOnly | 10:30:00 |
| Momen lengkap dengan offset | DateTimeOffset | 2025-08-17 10:30 +07:00 |
Contoh Penggunaan #
csharp
DateOnly tanggal = new DateOnly(2025, 8, 17);
TimeOnly jam = new TimeOnly(10, 30, 0);
Console.WriteLine(tanggal.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture));
Console.WriteLine(jam.ToString("HH:mm:ss", CultureInfo.InvariantCulture));
Console.WriteLine(tanggal.DayOfWeek);
Console.WriteLine(jam.AddMinutes(45).ToString("HH:mm:ss", CultureInfo.InvariantCulture));Output yang Dihasilkan:
text
2025-08-17
10:30:00
Sunday
11:15:00Mari kita bedah baris demi baris:
- Baris 1-2: masing-masing struct dibuat dengan komponen yang relevan saja; tidak ada jam 00:00 palsu dan tidak ada tanggal pengisi.
- Baris 4-5 (
ToString ...): formatyyyy-MM-dddanHH:mm:ssdicetak denganCultureInfo.InvariantCultureagar pola tetap konsisten antar mesin. - Baris 6 (
DayOfWeek): 17 Agustus 2025 jatuh pada hariSunday; properti kalender seperti ini tersedia tanpa konversi apa pun. - Baris 7 (
AddMinutes(45)): aritmetikaTimeOnlyberputar di dalam satu hari; 10:30 ditambah 45 menit menjadi 11:15, dan melewati tengah malam akan kembali ke 00:00.