ภาพรวม
บทความนี้แนะนำการใช้ DateTime.TryParseExact เพื่อตรวจสอบว่าสตริงวันที่ตรงตามรูปแบบที่กำหนดหรือไม่ วิธีนี้ปลอดภัยกว่า Regex เพราะตรวจสอบความถูกต้องของวันที่จริง (เช่น ไม่ให้ 30 กุมภาพันธ์ผ่าน)
โค้ดตัวอย่าง
using System;
using System.Globalization;
namespace Demo {
class Program {
static void Main(string[] args) {
DateTime d;
bool isValid = DateTime.TryParseExact(
"08/14/2018",
"MM/dd/yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out d
);
Console.WriteLine(isValid); // True
}
}
}
ผลลัพธ์
True
คำอธิบาย
TryParseExactคืนค่าtrueถ้าแปลงสำเร็จ และเก็บค่าวันที่ในพารามิเตอร์out- รูปแบบ
MM/dd/yyyyหมายถึง เดือน/วัน/ปี (เช่น 08/14/2018) CultureInfo.InvariantCultureใช้เพื่อไม่ให้ขึ้นอยู่กับการตั้งค่าภูมิภาคของระบบ- วิธีนี้ดีกว่า Regex เพราะตรวจสอบความถูกต้องของวันที่จริง (leap year, จำนวนวันในเดือน ฯลฯ)
รูปแบบวันที่ที่พบบ่อย
| รูปแบบ | ตัวอย่าง | คำอธิบาย |
|---|---|---|
| dd/MM/yyyy | 14/08/2018 | วัน/เดือน/ปี (ไทย, ยุโรป) |
| yyyy-MM-dd | 2018-08-14 | ISO 8601 มาตรฐานสากล |
| MM/dd/yyyy | 08/14/2018 | เดือน/วัน/ปี (สหรัฐอเมริกา) |