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

  1. 使用 ParseExact 方法在 PowerShell 中解析 DateTime
  2. 使用明確的類型轉換在 PowerShell 中解析 DateTime
  3. 結論
如何在 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 的簡單而有效的示範。

輸出:

powershell 日期時間解析確切 - 輸出 1

這個輸出顯示了從字串創建的 DateTime 對象,時間默認設置為午夜(00:00:00),因為輸入字串中沒有指定時間。

使用特定文化

在處理根據不同於當前系統設置的文化慣例格式化的日期字串時,使用特定文化與 ParseExact 是至關重要的。這種方法可以防止對日期的誤解,例如在 MM/dd/yyyydd/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 顯示解析後的日期,這說明了輸入字串在指定文化上下文中是如何正確解釋的。

輸出:

powershell datetime parseexact - 輸出 2

這個輸出演示了在法國文化背景下成功解析日期字串。該日期正確理解為 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 小時制時間)。我們仔細設置 $formatyyyy-MM-dd HH:mm 以對齊這一結構。

我們選擇 $null 作為 $provider,這表示我們使用不變文化。在日期時間格式標準且不受文化影響的情況下,這種方法是典型的。

關鍵時刻是當我們執行 [datetime]::ParseExact($dateTimeString, $format, $provider),將字串轉換為一個 DateTime 對象,這個對象同時包含字串中的日期和時間。

輸出:

powershell 日期時間解析確切 - 輸出 3

該結果有效地說明了我們的輸入字串已準確地解析為 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 對象。

輸出:

powershell datetime parseexact - 輸出 4

使用 DateTime 對象,您應該能執行任何 DateTime 操作。我們希望這個教程幫助您了解如何在 PowerShell 中將字串轉換為 DateTime 格式。

結論

在整個教程中,我們探討了 PowerShell 在處理 DateTime 轉換方面的多樣能力,著重於 ParseExact 方法及其在將字串解析為 DateTime 對象中的多用途。我們展示了如何處理簡單的日期格式,納入特定文化背景,解析包含日期和時間組件的字串。

此外,我們還深入了明確類型轉換的簡單而有效的技術,為標準日期格式提供了一種快速的方法。我們的範例顯示了理解和正確應用不同解析方法的重要性,以確保在 PowerShell 腳本中準確而高效的日期時間操作。

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Rohan Timalsina
Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

相關文章 - PowerShell DateTime