如何在 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 小时制时间)。我们仔细将 $format 设置为 yyyy-MM-dd HH:mm 以符合此结构。

我们选择 $null 作为 $provider,表示我们使用不变文化。此方法在日期时间格式是标准且不受文化影响时很常见。

关键时刻是当我们执行 [datetime]::ParseExact($dateTimeString, $format, $provider),将字符串转变为一个包含日期和时间的 DateTime 对象。

输出:

powershell datetime parseexact - 输出 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 日期时间解析精确 - 输出 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