การแยกวันที่ออกจากสตริง

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