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 ลงในโปรเจ็กต์ของคุณอย่างถูกต้องเพื่อให้ชนิดและเมธอดสามารถใช้งานได้