Как получить разницу во времени от нескольких начальных и конечных времен, которые приходят из файла? - PullRequest
0 голосов
/ 15 мая 2019

У меня есть файл с данными ниже, я хочу получить наибольшую разницу во времени с помощью PowerShell.

STARTTIME:2018-12-01 04:13:15

ENDTIME:2018-12-01 04:17:15

--
--
STARTTIME:2018-12-01 04:11:15

ENDTIME:2018-12-01 04:13:15

--

STARTTIME:2018-12-01 04:10:15

ENDTIME:2018-12-01 04:10:40

Я ожидаю, что результат будет 00: 04: 00

1 Ответ

1 голос
/ 15 мая 2019

Используйте регулярное выражение для выбора строк и STARTTIME / ENDTIME
, чтобы установить переменную с этим именем и значением [datetime]

## Q:\Test\2019\05\15\SO_56150523.ps1

$FileIn = '.\times.txt'
$RE = [regex]'^(STARTTIME|ENDTIME):(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})'

$Data = (Get-Content $FileIn)| Where-Object {$_ -match $RE}| ForEach-Object{
    Set-Variable -Name $Matches[1] -Value (Get-Date $Matches[2])
    if ($Matches[1] -eq 'ENDTIME'){
        [PSCustomObject]@{
            StartTime = $StartTime
            EndTime   = $EndTime
            Duration  = New-TimeSpan -Start $StartTime -End $EndTime
        }
    }
}
$Data

"`nThe longest duration is {0}" -f ($Data|Sort-Object Duration -Descending)[0].Duration

Пример вывода на основе полного текстаиз вопроса в файле times.txt

> Q:\Test\2019\05\15\SO_56150523.ps1

StartTime           EndTime             Duration
---------           -------             --------
2018-12-01 04:13:15 2018-12-01 04:17:15 00:04:00
2018-12-01 04:11:15 2018-12-01 04:13:15 00:02:00
2018-12-01 04:10:15 2018-12-01 04:10:40 00:00:25

The longest duration is 00:04:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...