我正在尝试将我从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
答案 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 ' ')
}