如何将PowerShell日期时间字符串从24小时格式转换为12小时格式?

时间:2017-10-24 02:13:15

标签: powershell datetime-format

PowerShell脚本中需要的实际行是:

$tsd = [datetime]::ParseExact($TSDiff,'yyyyMMddhhmmsstt',$null)

但正在使用的$TSDiff变量的时间表示为,没有AM / PM:

20171023212800

这是一个24小时格式,其中晚上11点由23表示。它是使用FTP请求检索的,该请求似乎只返回没有AM / PM的24小时格式字符串。

断开这一点,以下PowerShell命令可以正常工作:

[datetime]::ParseExact("20171023092800",'yyyyMMddhhmmss',$null)

但是以下PowerShell命令不起作用:

[datetime]::ParseExact("20171023212800",'yyyyMMddhhmmss',$null)

第二行不起作用的原因很明显;小时数字采用24小时格式,与本文开头列出的$TSDiff一样。

PowerShell中有一种简单的方法可以将字符串20171023212800转换为20171023092800PM吗?

2 个答案:

答案 0 :(得分:3)

来自Formatting Dates and Times

  

[...]

     
      
  • h%h - 12小时制的小时。一位数小时不会有前导零。如果格式模式未与其他格式模式组合,请指定%h
  •   
  • hh - 12小时制的小时。单位数小时将有一个前导零。
  •   
  • H%H - 24小时制的小时。一位数小时不会有前导零。如果格式模式未与其他格式模式组合,请指定%H
  •   
  • HH - 24小时制的小时。单位数小时将有一个前导零。
  •   
     

[...]

当您将日期时间字符串转换为格式说明符中带有hh的12小时格式化字符串时,它将转换为包含HH的24小时字符串,如:

[datetime]::ParseExact("20171023212800",'yyyyMMddHHmmss',$null)

答案 1 :(得分:1)

使用:

rngCelTohere.Row