【发布时间】:2019-05-30 17:12:55
【问题描述】:
我正在尝试比较两个变量之间的时间差。 $dt 是从日志文件文本中提取的字符串。 $curtime 是从当前日期和时间中提取的。
如果我输出$dt,它会正确显示日志文件中的日期和时间。如果我输出$curtime,它会正确显示工作站的日期和时间。
但是当我尝试运行 New-TimeSpan 并输出差异时,我的响应总是“02:24:12”。
这是我正在使用的代码:
New-TimeSpan $dt $curtime | Set-Variable -Name $TimeDiff
if ($TimeDiff.Seconds -lt 0) }
$Hrs = ($TimeDiff.Hours) + 23
$Mins = ($TimeDiff.Minutes) + 59
$Secs = ($TimeDiff.Seconds) + 59 }
else {
$Hrs = $TimeDiff.Hours
$Mins = $TimeDiff.Minutes
$Secs = $TimeDiff.Seconds }
$Difference = '{0:00}:{1:00}:{2:00}' -f $Hrs,$Mins,$Secs
$Difference
【问题讨论】:
-
变量 $dt 是一个字符串。您需要先将该字符串转换为 DateTime 对象。例如,根据字符串的格式,您可以使用
[DateTime]::Parse()或[DateTime]::ParseExact()。见DateTime的方法。 -
所以当我尝试 Parse 或 ParseExact,使用 $dt = datetime]::ParseExact($dt,"MM-dd-yy HH:mm:ss",$null),我得到一个错误“使用“3”参数调用“ParseExact”的异常:“字符串未被识别为有效的日期时间。”当我调用我的 $dt 和 $dt2 时,我得到完全相同的文本和格式:05/30/ 19 08:23:37
-
您的日期元素由斜杠而不是破折号分隔,因此您需要使用 $dt = [DateTime]::ParseExact($dt,"MM/dd/yy HH:mm:ss" ,$null)
标签: powershell variables time compare