วันพุธที่ 25 มีนาคม พ.ศ. 2552

การแก้ปัญหาเรื่องรูปแบบวันใน .Net

ปัญหาพบบ่อยในการจัดการวันเวลาที่พบคือ
1. ปัญหา พ.ศ. กับ ค.ศ.
2. รูปแบบวันที่ระหว่างฐานข้อมูลกับตัว Windows ไม่ตรงกัน เช่น ใน MySQL รูปแบบ Default คือ yyyy-mm-dd ส่วนใน Windows คือ dd/mm/yyyy (ขึ้นอยู่กับการกำหนดค่าใน windows)

สำหรับการแก้ปัญหาในเรื่องดังกล่าวทำได้โดย

ปัญหา พ.ศ. กับ ค.ศ.
ปัญหานี้แก้โดยกำหนด CultureInfo ให้เป็นรูปแบบที่ต้องการเช่น หากต้องการเปลี่ยนรูปแบบให้เป็น ค.ศ ก็ให้กำหนดค่าเป็น "en-US"
ตัวอย่าง Code

using System.Globalization;
.....

DateTimeFormatInfo myDTFI = new CultureInfo("en-US", false).DateTimeFormat;
Console.WriteLine(DateTime.Now.ToString(myDTFI));

ปัญหารูปแบบวันไม่ตรงตามที่ต้องการ
ปัญหานี้แก้โดยกำหนดรูปแบบวันตามที่ต้องการในขณะแปลงเป็นข้อความ
ตัวอย่าง Code

Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd", myDTFI));

จากตัวอย่างข้างต้น เมื่อใช้รวมกัน จะพิมพ์ข้อความออกมาในรูปแบบดังนี้
เช่น วันที่ 16 มกราคม พ.ศ. 2552 วันนี้พิมพ์ออกมาจะได้

2009-01-16