【发布时间】:2020-05-06 21:58:00
【问题描述】:
我在使用 Get-Date 命令时遇到了一些问题,并且出现错误:
Get-Date : Cannot bind parameter 'Date'. Cannot convert value "29/01/2020 00:00:00" to type "System.DateTime". Error: "String was not recognized as a valid DateTime."
我的部分代码:
$CEST = 7200
$CSV = Import-Csv -Path "D:\1.csv" -Delimiter ';' | Select-Object -SkipLast 2
$CSV | ForEach-Object {
$_.'Scheduled Start Date' = $CEST + [Math]::Floor([decimal](Get-Date(Get-Date $_.'Scheduled Start Date').ToUniversalTime()-uformat "%s"))
$_.'Scheduled End Date' = $CEST + [Math]::Floor([decimal](Get-Date(Get-Date $_.'Scheduled End Date').ToUniversalTime()-uformat "%s"))
$_.'Actual Start Date' =
If([string]::IsNullOrEmpty($_.'Actual Start Date')) {
$_.'Actual Start Date' = ""
}
ElseIf(![string]::IsNullOrEmpty($_.'Actual Start Date')) {
$CEST + [Math]::Floor([decimal](Get-Date(Get-Date $_.'Actual Start Date').ToUniversalTime()-uformat "%s"))
$_.'Scheduled Start Date' = $CEST + [Math]::Floor([decimal](Get-Date(Get-Date $_.'Actual Start Date').ToUniversalTime()-uformat "%s"))
}
$_.'Actual End Date' =
If([string]::IsNullOrEmpty($_.'Actual End Date')) {
$_.'Actual End Date' = ""
}
ElseIf(![string]::IsNullOrEmpty($_.'Actual End Date')) {
$CEST + [Math]::Floor([decimal](Get-Date(Get-Date $_.'Actual End Date').ToUniversalTime()-uformat "%s"))
$_.'Scheduled End Date' = $CEST + [Math]::Floor([decimal](Get-Date(Get-Date $_.'Actual End Date').ToUniversalTime()-uformat "%s"))
}
}
$CSV |
Export-Csv -Path "D:\1_tmp.csv" -Delimiter ';' -NoTypeInformation
日期以如下格式保存在 1.csv 文件中的多行列中(计划结束日期、计划开始日期、实际结束日期、实际开始日期)
27/05/2020 07:00:00
当我在计算机上运行 Get-Date 命令时,输出为:
Wednesday, May 6, 2020 2:59:59 PM
请支持!
【问题讨论】:
-
您可以尝试使用
[datetime]::ParseExact($_.'Actual Start Date', 'dd/MM/yyyy HH:mm:ss', $null)解析CSV文件中给出的日期 -
我添加了,
CEST = 7200 $CSV = Import-Csv -Path "D:\1.csv" -Delimiter ';' | Select-Object -SkipLast 2 [datetime]::ParseExact($_.'Actual Start Date', 'dd/MM/yyyy HH:mm:ss', $null) [datetime]::ParseExact($_.'Actual End Date', 'dd/MM/yyyy HH:mm:ss', $null) [datetime]::ParseExact($_.'Scheduled End Date', 'dd/MM/yyyy HH:mm:ss', $null) [datetime]::ParseExact($_.'Scheduled Start Date', 'dd/MM/yyyy HH:mm:ss', $null) $CSV | ForEach-Object { ......但它不起作用
标签: powershell