如何在 PowerShell 中使用 ParseExact 解析日期時間

在 PowerShell 中處理日期時,有時您需要將日期字串轉換為 DateTime
對象。您不能使用日期字串來執行 DateTime
操作;您需要 DateTime
對象。
這種轉換至關重要,因為日期字串本身不足以執行 DateTime
操作。我們的教程旨在通過提供全面的指導,填補這一空白,指導您如何在 PowerShell 中解析和轉換字串為 DateTime
格式。
使用 ParseExact
方法在 PowerShell 中解析 DateTime
DateTime
類的 ParseExact
方法將日期和時間字串轉換為 DateTime
格式。日期和時間字串模式的格式必須與指定的 DateTime
對象的格式相匹配。
ParseExact
的語法如下:
[datetime]::ParseExact(string, format, provider)
參數:
string
:您想要轉換的字串格式的日期和時間。format
:定義字串預期格式的精確格式說明符。provider
:提供文化特定格式信息的物件。如果使用當前文化,可以為null
。
簡單的日期解析
以下範例使用 ParseExact
方法將日期字串轉換為 DateTime
對象。
$dateString = '24-Jan-2024'
$format = 'dd-MMM-yyyy'
$culture = $null # Using the current culture
# Parsing the date
$parsedDate = [datetime]::ParseExact($dateString, $format, $culture)
# Displaying the result
Write-Host "Parsed Date: $parsedDate"
在這段代碼中,我們首先定義日期字串 24-Jan-2024
,它表示以日-月-年格式的日期,並包含簡寫的月份名稱。我們通過 dd-MMM-yyyy
格式說明符指定這一格式。
$culture
變量設置為 $null
,這告訴 PowerShell 使用系統的當前文化設置來解析日期。
核心功能是 [datetime]::ParseExact($dateString, $format, $culture)
,它根據我們指定的 $format
解析 $dateString
。解析後,該字串被轉換為 DateTime
對象,我們將其存儲在 $parsedDate
變量中。
最後,我們使用 Write-Host
顯示解析後的日期。這是展示如何在實際情境中使用 ParseExact
的簡單而有效的示範。
輸出:
這個輸出顯示了從字串創建的 DateTime
對象,時間默認設置為午夜(00:00:00
),因為輸入字串中沒有指定時間。
使用特定文化
在處理根據不同於當前系統設置的文化慣例格式化的日期字串時,使用特定文化與 ParseExact
是至關重要的。這種方法可以防止對日期的誤解,例如在 MM/dd/yyyy
和 dd/MM/yyyy
格式中混淆月份和日期。
這是一個簡單的範例:
$dateString = '23/01/2024'
$format = 'dd/MM/yyyy'
$culture = [Globalization.CultureInfo]::CreateSpecificCulture('fr-FR')
# Parsing the date
$parsedDate = [datetime]::ParseExact($dateString, $format, $culture)
# Displaying the result
Write-Host "Parsed Date: $parsedDate"
在這段代碼片段中,我們目的是解析遵循法國日期格式 dd/MM/yyyy
的日期字串。我們首先定義日期字串 23/01/2024
。
注意,格式 dd/MM/yyyy
可能與美國使用的 MM/dd/yyyy
格式混淆。為了正確解釋該日期為 1 月 23 日,而不是 3 月 1 日,我們指定法國文化 ('fr-FR')
。
$culture
變量使用 [Globalization.CultureInfo]::CreateSpecificCulture('fr-FR')
實例化,為我們的解析操作準備文化上下文。然後,我們調用 [datetime]::ParseExact($dateString, $format, $culture)
來解析該日期字串。
最後,我們使用 Write-Host
顯示解析後的日期,這說明了輸入字串在指定文化上下文中是如何正確解釋的。
輸出:
這個輸出演示了在法國文化背景下成功解析日期字串。該日期正確理解為 2024 年 1 月 23 日,而不是因為月份-日期順序不同而被誤解。
包含時間的解析
在 PowerShell 中,有效處理日期和時間是一項至關重要的技能,特別是在解析包含日期和時間組件的字串時。DateTime
類的 ParseExact
方法擅長詮釋這樣的字串,只要格式被準確指定。
讓我們解析一個包含日期和時間的字串:
$dateTimeString = '2024-01-23 14:30'
$format = 'yyyy-MM-dd HH:mm'
$provider = $null # Opting for the invariant culture
# Parsing the datetime
$parsedDateTime = [datetime]::ParseExact($dateTimeString, $format, $provider)
# Displaying the result
Write-Host "Parsed DateTime: $parsedDateTime"
在我們的範例中,我們處理一個日期時間字串 2024-01-23 14:30
,其格式為國際標準(年-月-日和 24 小時制時間)。我們仔細設置 $format
為 yyyy-MM-dd HH:mm
以對齊這一結構。
我們選擇 $null
作為 $provider
,這表示我們使用不變文化。在日期時間格式標準且不受文化影響的情況下,這種方法是典型的。
關鍵時刻是當我們執行 [datetime]::ParseExact($dateTimeString, $format, $provider)
,將字串轉換為一個 DateTime
對象,這個對象同時包含字串中的日期和時間。
輸出:
該結果有效地說明了我們的輸入字串已準確地解析為 DateTime
對象,捕捉了日期和時間組件。
使用明確的類型轉換在 PowerShell 中解析 DateTime
您也可以將日期和時間的字串轉換為 PowerShell 中的 DateTime
格式。
使用這種語法,您可以將字串轉換為 DateTime
對象。
[DateTime]string
以下範例將日期和時間的字串表示轉換為 DateTime
對象,使用了強制類型轉換。
$strDate = "2022-06-11 09:22:40"
[DateTime]$strDate
在我們的 PowerShell 代碼片段中,我們將字串 "2022-06-11 09:22:40"
指派給變量 $strDate
。這個字串代表一個標準格式的日期和時間。
接著,我們使用 [DateTime]$strDate
進行類型轉換為 DateTime
對象。
輸出:
使用 DateTime
對象,您應該能執行任何 DateTime
操作。我們希望這個教程幫助您了解如何在 PowerShell 中將字串轉換為 DateTime
格式。
結論
在整個教程中,我們探討了 PowerShell 在處理 DateTime
轉換方面的多樣能力,著重於 ParseExact
方法及其在將字串解析為 DateTime
對象中的多用途。我們展示了如何處理簡單的日期格式,納入特定文化背景,解析包含日期和時間組件的字串。
此外,我們還深入了明確類型轉換的簡單而有效的技術,為標準日期格式提供了一種快速的方法。我們的範例顯示了理解和正確應用不同解析方法的重要性,以確保在 PowerShell 腳本中準確而高效的日期時間操作。