Pertukaran data memindahkan tanggal sebagai teks, jadi dua arah konversi harus sama kuatnya: ToString membentuk teks dari nilai, dan Parse beserta variannya membaca teks kembali menjadi nilai. Sumber galat klasik ada di arah parsing: pola umum TryParse mengikuti aturan culture, sehingga 17/08/2025 sah di satu culture dan ditolak di culture lain.
Format dan Parsing yang Ketat #
DateTime nilai = new DateTime(2025, 8, 17, 10, 30, 0);
string standar = nilai.ToString("yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
Console.WriteLine(standar);
DateTime hasil = DateTime.ParseExact(standar, "yyyy-MM-ddTHH:mm:ss", CultureInfo.InvariantCulture);
Console.WriteLine(hasil.ToString("yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture));
bool ok = DateTime.TryParseExact(
"17/08/2025", "dd/MM/yyyy",
CultureInfo.InvariantCulture, DateTimeStyles.None,
out DateTime terurai);
Console.WriteLine($"{ok} {terurai:yyyy-MM-dd}");
bool gagal = DateTime.TryParse(
"17/08/2025", CultureInfo.InvariantCulture, DateTimeStyles.None, out _);
Console.WriteLine(gagal);Output yang Dihasilkan:
2025-08-17T10:30:00
2025-08-17 10:30
True 2025-08-17
FalseMari kita bedah baris demi baris:
- Baris 3-4 (
ToString ...): polayyyy-MM-ddTHH:mm:ssmenghasilkan bentuk ISO 8601; hurufTmenjadi pemisah tanggal dan jam. - Baris 6 (
ParseExact): teks diurai hanya bila cocok persis dengan pola dan culture yang diberikan; penyimpangan sekecil apa pun melemparFormatException. - Baris 9-13 (
TryParseExact): poladd/MM/yyyymembaca17/08/2025dengan benar;TryParseExactmengembalikanboolmelalui parameteroutalih-alih melempar exception. - Baris 15-18 (
TryParsetanpa pola): parser memakai pola pendek default culture invariant, yaituMM/dd/yyyy; bulan17tidak sah sehingga hasilnyaFalse.
Penentu format yang sering dipakai selain pola kustom: d untuk pola pendek culture, f untuk pola panjang dengan jam, dan O untuk ISO 8601 round-trip yang mempertahankan presisi hingga pecahan detik. Saat menulis pola kustom sendiri, ingat bahwa huruf M berbeda makna dari m, dan tanda kutip tunggal membuat teks apa pun dicetak sebagai literal.