首页 > 解决方案 > 如何比较两个变量之间的时间

问题描述

我正在尝试比较两个变量之间的时间差。 $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

标签: powershellvariablestimecompare

解决方案


除非日志中的日期时间来自非常窄的时间跨度,
否则通过添加 23:59:59 来操纵 IMO 是没有意义的。
最好从 .TotalHours 中取出整数部分

这里返回时间 > 24/99

$dt       = "05/26/19 08:23:37"
$LogDT    = [datetime]::parseexact($dt,"MM/dd/yy HH:mm:ss",[cultureInfo]::Invariantculture)
$TimeDiff = [datetime]::now - $LogDT
$Difference = '{0:00}:{1:00}:{2:00}' -f ([math]::floor($Timediff.TotalHours)),
                                        $Timediff.Minutes,$Timediff.Seconds

样本输出:

> $Difference
111:16:17

推荐阅读