Friday, June 27, 2008 2:00 PM dede

'WIB' in DateTime String

Q: Bagaimana meng-convert DateTime '6/28/2008 12:15:05 AM' (en-us format) atau '28/06/2008 0:15:05' (id-ID format) menjadi '28/06/2008 0:15:05 WIB'?

A: Banyak yang salah sangka bahwa 'AM/PM' bisa di ganti dengan 'WIB'.

Untuk Culture (en) mereka memang menggunakan 'AM/PM' sebagai penanda 12 jam.
Sedangkan di indonesia kita tidak menggunakan format itu. Kita menggunakan format 24 jam.
Coba kita lihat code di bawah:

    DateTime.Now.ToString(new CultureInfo("id-ID", true))
	hasil: '28/06/2008 0:15:05'
    DateTime.Now.ToString(new CultureInfo("en-US", true))
	hasil: '6/28/2008 12:15:05 AM'
Cukup dengan mengganti CultureInfo saja kita bisa meng-convert-nya menjadi beda format.
Dan format-nya mengikuti dari format di negara bersangkutan.

Untuk membuat-nya permanent/per-application, maka kita bisa mengganti pada Thread aplikasi.
	//memerlukan namespace: System.Threading
	Thread.CurrentThread.CurrentCulture = new CultureInfo("id-ID");
Lalu bagaimana dengan 'WIB'/Waktu Indonesia Barat-nya?
WIB,WITA,WIT,EST dan lainnya tidak berhubungan langsung dengan class DateTime.
Karena ini merupakan TimeZone yang kita set dikomputer sesuai negara yang berada.

CultureInfo merupakan set of format yang di pakai negara bersangkutan. Yang di maksud format adalah currency, datetime, number dan sebagainya.
Sedangkan TimeZone merupakan Standard yang sudah di sepakati dan bukan merupakan format.

Jadi untuk menampilkan '28/06/2008 0:15:05 WIB' ini maka yang kita perlu meng-convert menjadi format tanggal indonesia (id-ID) dan di tambahkan TimeZone untuk di tampilkan 'WIB'-nya.

TimeZone akan berguna bila kita akan berhubungan dengan Area Waktu/TimeZone di mana negara itu berada.
Seperti kita ingin tahu jam berapa di new york? maka kita melihat TimeZone-nya kemudian membandingkan dengan TimeZone kita berada. Kita memajukan-memundurkan Waktu berdasarkan Zone di mana negara tersebut berada.

Memang pada BCL di bawah 3.5, kita cuma memiliki class TimeZone.
Class ini hanya memiliki sedikit fungsi untuk membantu kita meng-convert DateTime dari satu Zone ke Zone lainnya, kebanyakkan kita menulis sendiri(baca: code) untuk itu.
Sedang di .Net 3.5 kita akan mendapatkan TimeZoneInfo class yang tadinya namanya TimeZone2 (pada saat beta/pre-realese-nya) dan ia berada di assembly System.Core.dll .
	TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now).ToString()
	hasil: '07:00:00'
	TimeZoneInfo.Local.ToString()
	hasil: '(GMT +07:00)Bangkok, Hanoi, Jakarta'
	TimeZoneInfo.Local.BaseUtcOffset.ToString()
	hasil: '07:00:00'

Share this post: | | | |
Filed under: , , ,

Comments

No Comments