Powershell Получить разницу в значениях между датами - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь наметить некоторые данные из CSV. CSV структурирован как дата, состояние, темп. То, что я пытаюсь сделать, это получить разницу во времени между днем ​​и сегодняшним днем. Таким образом, набор данных в исходном CSV может выглядеть следующим образом:

20200323,AK,34
20200322,AK,35
20200321,AK,42

После того, как я импортирую CSV, я создаю пользовательский объект для добавления объекта для временной разницы. Но я не уверен, как бы я получил временную разницу между днями.

$tempdata = Import-Csv -Path 'tempdata.csv' | ForEach-Object {
    [PSCustomObject]@{
        'date'          = $_.date
        'state'         = $_.state
        'temp'      = $_.temp
        'difference'      = ?
    }
}

В идеале я хочу, чтобы данные в $ tempdata выглядели так, как показано ниже, но я просто не могу обернуться, чтобы это сделать. Любая помощь приветствуется. Спасибо!

20200323,AK,34,-1
20200322,AK,35,-7
20200321,AK,42,$null or 0

1 Ответ

1 голос
/ 24 марта 2020

РЕДАКТИРОВАТЬ: чтобы разобраться с тем, как я на самом деле написал бы:

$tempdata = @"
date,state,temp
20200323,AK,34
20200322,AK,35
20200321,AK,42
"@ | ConvertFrom-Csv


$out = for ($i=0; $i -lt $tempdata.count; $i++) {
    $n = [PSCustomObject]@{
        'date'          = $tempdata[$i].date
        'state'         = $tempdata[$i].state
        'temp'          = $tempdata[$i].temp
        'difference'    = $null
    }
    if ($tempdata[$i+1]) {
        $n.difference = $tempdata[$i].temp - $tempdata[$i+1].temp
    } 

    $n
}

$out | ConvertTo-Csv

##or 

$out | Export-Csv -NoTypeInformation out.csv

"date","state","temp","difference"
"20200323","AK","34","-1"
"20200322","AK","35","-7"
"20200321","AK","42",

если вы пролистаете данные с помощью for, вы можете использовать индекс для нацеливания на следующий или предыдущий элемент в массиве, используя положительные или отрицательные числа. If ($ tempdata [$ i + 1) - это проверка, чтобы убедиться, что есть «предыдущий день», с которым нужно посчитать. Кроме того, то, как происходит эта математика, подразумевает, что все исходные файлы упорядочены одинаково; newest-> старейшей.

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