Ala*_*lan 4 powershell datetime-format
PowerShell 脚本中所需的实际行是:
$tsd = [datetime]::ParseExact($TSDiff,'yyyyMMddhhmmsstt',$null)
Run Code Online (Sandbox Code Playgroud)
但$TSDiff所使用的变量的时间表示为,没有 AM/PM:
20171023212800
Run Code Online (Sandbox Code Playgroud)
这是一种 24 小时格式,其中 11 pm 用 23 表示。它是使用 FTP 请求检索的,该请求似乎只返回 24 小时格式字符串,没有 AM/PM。
对此进行分解,以下 PowerShell 命令可以工作:
[datetime]::ParseExact("20171023092800",'yyyyMMddhhmmss',$null)
Run Code Online (Sandbox Code Playgroud)
但以下 PowerShell 命令不起作用:
[datetime]::ParseExact("20171023212800",'yyyyMMddhhmmss',$null)
Run Code Online (Sandbox Code Playgroud)
第二行不起作用的原因很清楚;小时数字采用 24 小时格式,如$TSDiff本文开头列出的那样。
PowerShell 中有一种简单的方法可以将字符串转换20171023212800为 吗20171023092800PM?
[...]
h,%h- 12 小时制的小时。个位数的小时数不会有前导零。指定%h该格式模式是否不与其他格式模式组合。hh- 12 小时制的小时。个位数的小时数将有一个前导零。H,%H- 24 小时制的小时。个位数的小时数不会有前导零。指定%H该格式模式是否不与其他格式模式组合。HH- 24 小时制的小时。个位数的小时数将有一个前导零。[...]
当您使用格式说明符将日期时间字符串转换为 12 小时格式的字符串时hh,它将转换为 24 小时格式的字符串,HH如下所示:
[datetime]::ParseExact("20171023212800",'yyyyMMddHHmmss',$null)
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           17562 次  |  
        
|   最近记录:  |