Angka dan tanggal tidak memiliki bentuk teks yang universal: bulan Agustus bernama “Agustus” dalam bahasa Indonesia dan “August” dalam bahasa Inggris, dengan puluhan bahasa lain menyusul. Class CultureInfo di namespace System.Globalization membungkus kumpulan aturan tersebut: nama hari dan bulan, pemisah tanggal dan angka, simbol mata uang, hingga urutan pengurutan kata.

Dua Cara Memakai Culture #

  • Culture eksplisit: kita mengirim CultureInfo sebagai argumen ToString atau Parse; hasilnya bisa diprediksi di mesin mana pun.
  • Culture default (CurrentCulture): format tanpa argumen mengikuti pengaturan mesin, sehingga keluaran berubah-ubah antar lingkungan; culture ini dibedah pada bab Globalization.

Perbandingan id-ID dan InvariantCulture #

Bab ini sengaja memakai culture id-ID sebagai contoh, dipasangkan dengan CultureInfo.InvariantCulture yang meniadakan aturan budaya untuk kebutuhan format mesin:

csharp
var idID = CultureInfo.GetCultureInfo("id-ID");
var invariant = CultureInfo.InvariantCulture;

DateTime nilai = new DateTime(2025, 8, 17);

Console.WriteLine(nilai.ToString("dd MMMM yyyy", idID));
Console.WriteLine(nilai.ToString("dd MMMM yyyy", invariant));
Console.WriteLine(idID.Name);
Console.WriteLine(idID.NumberFormat.CurrencySymbol);

Output yang Dihasilkan:

text
17 Agustus 2025
17 August 2025
id-ID
Rp

Mari kita bedah baris demi baris:

  1. Baris 1 (GetCultureInfo("id-ID")): method mengembalikan instance culture Indonesia yang sudah tersimpan dalam cache runtime; culture yang tidak terdaftar melempar CultureNotFoundException.
  2. Baris 6 (ToString ... idID): penentu MMMM membaca nama bulan dari tabel culture, sehingga muncul Agustus.
  3. Baris 7 (ToString ... invariant): culture yang sama menghasilkan August karena InvariantCulture memakai tabel bahasa Inggris netral.
  4. Baris 8-9: properti Name mengembalikan identifier id-ID, dan NumberFormat.CurrencySymbol menunjukkan Rp sebagai simbol rupiah.