PowerShell:
การแยกวันที่ออกจากสตริง
วิธีทำ:
PowerShell ทำให้การแยกวิเคราะห์วันที่จากสตริงเป็นไปอย่างง่ายดายด้วยคำสั่ง Get-Date และตัวเร่งประเภท [datetime], ซึ่งทำงานได้ดีสำหรับรูปแบบวันที่มาตรฐาน สำหรับสตริงวันที่ที่ซับซ้อนหรือไม่ตามมาตรฐาน, สามารถใช้เมธอด [datetime]::ParseExact เพื่อระบุรูปแบบที่ชัดเจน
การใช้ Get-Date และ [datetime]:
# การแปลงแบบง่ายๆ โดยใช้ Get-Date
$stringDate = "2023-04-01"
$date = Get-Date $stringDate
echo $dateตัวอย่างผลลัพธ์:
วันเสาร์, เมษายน 1, 2023 12:00:00 น.# การใช้ตัวเร่งประเภท [datetime]
$stringDate = "April 1, 2023"
$date = [datetime]$stringDate
echo $dateตัวอย่างผลลัพธ์:
วันเสาร์, เมษายน 1, 2023 12:00:00 น.การใช้ [datetime]::ParseExact สำหรับรูปแบบที่ไม่มาตรฐาน:
สำหรับรูปแบบที่ไม่ได้รับการรู้จักโดยอัตโนมัติ, คุณสามารถกำหนดรูปแบบที่ชัดเจนเพื่อให้การแยกวิเคราะห์ถูกต้อง
$stringDate = "01-04-2023 14:00"
$format = "dd-MM-yyyy HH:mm"
$culture = [Globalization.CultureInfo]::InvariantCulture
$date = [datetime]::ParseExact($stringDate, $format, $culture)
echo $dateตัวอย่างผลลัพธ์:
วันเสาร์, เมษายน 1, 2023 2:00:00 หลังเที่ยงการใช้พลังของไลบรารีบุคคลที่สาม
แม้ว่า PowerShell จะมีพลังมากพอสำหรับการแยกวิเคราะห์วันที่, สำหรับสถานการณ์ที่ซับซ้อนมากหรือฟังก์ชันเพิ่มเติม, คุณอาจสำรวจไลบรารี .NET เช่น NodaTime แต่สำหรับกรณีการใช้งานทั่วไปมากมาย, ความสามารถของ PowerShell ดั้งเดิมก็เพียงพอแล้ว
# การใช้ NodaTime เพียงเพื่อเป็นการสาธิต, โปรดทราบว่าคุณต้องเพิ่มไลบรารีลงในโปรเจ็กต์ของคุณ
# Install-Package NodaTime -Version 3.0.5
# การใช้ NodaTime เพื่อแยกวิเคราะห์วันที่
[string]$stringDate = "2023-04-01T14:00:00Z"
[NodaTime.Instant]::FromDateTimeUtc([datetime]::UtcNow)
[NodaTime.LocalDate]$localDate = [NodaTime.LocalDate]::FromDateTime([datetime]::UtcNow)
echo $localDateหมายเหตุตัวอย่าง: โค้ดด้านบนเป็นเพียงการสาธิตแนวคิด เมื่อใช้งานจริง, ตรวจสอบให้แน่ใจว่าได้เพิ่ม NodaTime ลงในโปรเจ็กต์ของคุณอย่างถูกต้องเพื่อให้ชนิดและเมธอดสามารถใช้งานได้