Как сравнить время между двумя переменными - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь сравнить разницу во времени между двумя переменными. $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

1 Ответ

0 голосов
/ 31 мая 2019

Если только дата и время из журналов не очень узкие,
ИМО не имеет смысла манипулировать, добавляя 23: 59: 59.
Лучше взять целую часть из .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
...