PowerShell中字符串转换为日期时间

20

我试图将文件的时间戳值转换为日期时间,以便比较两个日期时间之间的差异。

数据将以24122014_022257的格式传输。我需要将其转换为日期时间,以便进行比较:

$usdate="24122014_022257"   
$dateParts = $usdate -split "_"   
$final = $dateparts[0] + $dateParts[1]   

我该怎么做?

3个回答

30
你可以使用ParseExact方法:
[datetime]::ParseExact('24122014_022257','ddMMyyyy_HHmmss',$null)

Wednesday, December 24, 2014 2:22:57 AM

12
请使用 [Globalization.CultureInfo]::InvariantCulture 而不是 $null。如果格式字符串具有 AM/PM 带标识符,而您的系统区域设置不支持该标识符,则后者将引发错误。 - Ansgar Wiechers
1
如果我要转换使用AM/PM指定符的数据,通常只需将“tt”说明符添加到格式字符串中。 - mjolinor
2
我不明白为什么要在没有AM/PM指示符的字符串上进行ParseExact,并添加处理文化差异的选项。 - mjolinor
2
在我的系统上,[datetime]::ParseExact('24/12/2014','dd/MM/yyyy',$null) 会引发异常,但是 [datetime]::ParseExact('24/12/2014','dd/MM/yyyy',[Globalization.CultureInfo]::InvariantCulture) 可以正常工作。 - miracle173
@miracle173 这很奇怪; [DateTime]::ParseExact('24/12/2014','dd/MM/yyyy',$null) 对我来说完全没有问题。 - Franklin Yu

10

ParseExact会做到这一点。您可以在第二个参数中指定自定义日期时间格式。您可以将第三个参数保留为空,或指定要使用的文化(如果您导入的文件是从具有不同时区的系统生成的,则可能很重要)。

$usdate="24122014_022257"
[datetime]::ParseExact($usdate,"ddMMyyyy_HHmmss", [System.Globalization.CultureInfo]::CurrentCulture)

5

get-date 24122014022257

获取日期 24122014022257


对我来说,这返回的是:2021年1月28日22:03:21 - BikerP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接