Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

การตรวจสอบรูปแบบวันที่ด้วย Regex ใน C#

ภาพรวม

บทความนี้แนะนำการใช้ 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/yyyy14/08/2018วัน/เดือน/ปี (ไทย, ยุโรป)
yyyy-MM-dd2018-08-14ISO 8601 มาตรฐานสากล
MM/dd/yyyy08/14/2018เดือน/วัน/ปี (สหรัฐอเมริกา)