Powershell获取日期之间的值差异
我正在尝试从csv中绘制一些数据。csv的结构类似于日期、状态、温度。我想做的是得到前一天和今天的温差。因此,原始csv中的数据集可能如下所示:Powershell获取日期之间的值差异,powershell,Powershell,我正在尝试从csv中绘制一些数据。csv的结构类似于日期、状态、温度。我想做的是得到前一天和今天的温差。因此,原始csv中的数据集可能如下所示: 20200323,AK,34 20200322,AK,35 20200321,AK,42 导入csv后,我将创建一个customobject以添加一个用于温差的对象。但我不确定如何得到两天之间的温差 $tempdata = Import-Csv -Path 'tempdata.csv' | ForEach-Object { [PSCustom
20200323,AK,34
20200322,AK,35
20200321,AK,42
导入csv后,我将创建一个customobject以添加一个用于温差的对象。但我不确定如何得到两天之间的温差
$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
编辑:要用我实际的写作方式来整理这篇文章:
$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)是一个检查,以确保有一个“前一天”进行计算。此外,这种计算的方式意味着源文件的顺序都相同;最新->最旧。谢谢。这正是我要找的。