[英]How do I convert a PowerShell datetime string from 24 hour to 12 hour format?
所需的PowerShell脚本中的实际行是:
$tsd = [datetime]::ParseExact($TSDiff,'yyyyMMddhhmmsstt',$null)
但是使用的$TSDiff
变量的时间表示为不带AM / PM的时间:
20171023212800
这是一种24小时格式,其中11 pm由23表示。它是通过FTP请求检索的,该请求似乎仅返回24小时格式的字符串,而没有AM / PM。
分解来看,以下PowerShell命令有效:
[datetime]::ParseExact("20171023092800",'yyyyMMddhhmmss',$null)
但是以下PowerShell命令不起作用:
[datetime]::ParseExact("20171023212800",'yyyyMMddhhmmss',$null)
第二行不起作用的原因很清楚。 小时数字采用24小时格式,如本文$TSDiff
列出的$TSDiff
。
PowerShell中是否有一种简单的方法将字符串20171023212800
转换为20171023092800PM
?
[...]
h
,%h
-12小时制中的小时。 单位小时不会有前导零。 如果格式模式未与其他格式模式组合,请指定%h
。hh
-12小时制中的小时。 单位小时数的前导零。H
,%H
-24小时制中的小时。 单位小时不会有前导零。 如果格式模式未与其他格式模式组合,请指定%H
。HH
-24小时制中的小时。 单位小时数的前导零。[...]
在格式说明符中将日期时间字符串转换为带有hh
的12小时格式的字符串时,它将转换为带有HH
的24小时字符串,例如:
[datetime]::ParseExact("20171023212800",'yyyyMMddHHmmss',$null)
采用:
# Method 1. Use HH for 24-hour format like TessellatingHeckler proposes
[datetime]::ParseExact("20171023212800", 'yyyyMMddHHmmss', $null)
# Method 2. If you are not sure your string is
# date, use TryParse with the same format
[datetime]$dirDate = New-Object DateTime
if ([DateTime]::TryParseExact(
'20171023212800',
'yyyyMMddHHmmss',
[System.Globalization.CultureInfo]::InvariantCulture,
[System.Globalization.DateTimeStyles]::None,
[ref]$dirDate))
{
$dirDate
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.