如何在 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 脚本中准确和高效地处理日期时间的重要性。