在PowerShell中将日期格式yyyy / MM / dd / hh / mm / ss转换为datetime对象

时间:2018-05-21 19:45:26

标签: powershell date datetime

我正在尝试将我从Linux系统接收的日期作为yyyy/MM/dd/hh/mm/ss格式的字符串,我想将其转换为日期时间PowerShell对象。我尝试使用ParseExact方法,但似乎在这里遗漏了一些东西,因为我不断收到DateTime格式无效的消息。也许我完全以错误的方式解决这个问题。有什么建议吗?

$DateTimeObject = [datetime]::ParseExact('2018/05/21/14/08/17',"yyyy/MM/dd/hh/mm/ss",$null)
  

异常调用" ParseExact"用" 3"参数:" String未被识别为有效的DateTime。"   在行:1个字符:1   + [datetime] :: ParseExact(' 2018/05/21/14/8/17/17',#34; yyyy / MM / dd / hh / mm / ss",$ n .. 。   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~       + CategoryInfo:NotSpecified:(:) [],MethodInvocationException       + FullyQualifiedErrorId:FormatException

2 个答案:

答案 0 :(得分:10)

您的日期字符串为小时14,使用24小时制。 hh但只支持01-12范围内的小时数。您需要使用大写HH代替:

$DateTimeObject = [datetime]::ParseExact('2018/05/21/14/08/17',"yyyy/MM/dd/HH/mm/ss",$null)
#                                                                          ^^

您可以找到所有有效格式代码here的列表。

答案 1 :(得分:0)

可以编写自己的解析函数:

function ConvertTo-DateTime([string] $datetime) {
    $arr = $datetime -split '/'
    return [datetime](($arr[0..2] -join '-'), ($arr[3..5] -join ':') -join ' ')
}