Powershell 将日期列表与最大日期进行比较
我有一个最大日期的输出$a和$b,如下所示:我想比较包含日期的$a和$b,并得到结果。$a和$b将每天更改。我们的目标是每天在最长日期后获得一切。“最大日期”每天都会更改,因为新数据加载的日期和$a每天都会更改为 这就是$a的派生方式:Powershell 将日期列表与最大日期进行比较,powershell,powershell-2.0,powershell-3.0,powershell-4.0,Powershell,Powershell 2.0,Powershell 3.0,Powershell 4.0,我有一个最大日期的输出$a和$b,如下所示:我想比较包含日期的$a和$b,并得到结果。$a和$b将每天更改。我们的目标是每天在最长日期后获得一切。“最大日期”每天都会更改,因为新数据加载的日期和$a每天都会更改为 这就是$a的派生方式: $access_token ="Access_Token" $URI = "https://XXXXX" $headers = @{“authorization” = “Bearer $access_token”} [Net.ServicePointMan
$access_token ="Access_Token"
$URI = "https://XXXXX"
$headers = @{“authorization” = “Bearer $access_token”}
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$result = Invoke-RestMethod -Uri $URI -Headers $headers -ContentType $ContentType |ConvertTo-Json
$a = $Result|ConvertFrom-Json| Select -ExpandProperty Forms
正如马蒂亚斯所说,我们需要更多的细节。但要想让你先走一步,以下几点是可行的:
$A = @(
[PSCustomObject]@{
id = 'Person 1'
date = [DateTime]'01/02/2017 10:59:15'
}
[PSCustomObject]@{
id = 'Person 2'
date = [DateTime]'02/03/2017 13:10:19'
}
[PSCustomObject]@{
id = 'Person 3'
date = [DateTime]'04/05/2017 11:11:12'
}
[PSCustomObject]@{
id = 'Person 4'
date = [DateTime]'10/10/2017 10:42:19'
}
[PSCustomObject]@{
id = 'Person 5'
date = [DateTime]'10/10/2017 13:34:58'
}
)
$B = @{
MAX_Date = [DateTime]'02/03/2017 13:10:19 '
}
$A | Where-Object { $_.date -gt $B.MAX_Date } | Sort-Object id
根据OP中提供的信息,这是我的最佳猜测。什么是
$a
和$b
?它们是弦吗?字符串数组?请向我们展示您是如何在第一阶段创建它们的place@MathiasR.Jessen. 它们是字符串数组,$a和$b将每天更改。我有一种方法可以做到这一点,而不用硬编码日期。正如马蒂亚斯所说,我们需要更多的细节。数据来自哪里?格式是什么?目标是什么?。。。。在不知道所有细节的情况下回答一个问题是很困难的。我已经补充了我是如何得到答案的$a@Djbril你所需要的只是最后一行。这怎么不是答案?@js2010我不想要最后一行,请看想要的结果。我要的是b美元之后的所有东西,即2017年3月2日13:10:19。如果我需要最后一行,我会使用selectobject-last1。这只会选择person5。我需要它来接3号、4号和5号人。@Djbril告诉我这个问题是否还在发生。如果是这样,我猜您的$a不是一个真正的数组。
$b=
MAX_Date
02/03/2017 13:10:19
Desired results:
id date
-------- -----------
Person 3 04/05/2017 11:11:12
Person 4 10/10/2017 10:42:19
Person 5 10/10/2017 13:34:58
$A = @(
[PSCustomObject]@{
id = 'Person 1'
date = [DateTime]'01/02/2017 10:59:15'
}
[PSCustomObject]@{
id = 'Person 2'
date = [DateTime]'02/03/2017 13:10:19'
}
[PSCustomObject]@{
id = 'Person 3'
date = [DateTime]'04/05/2017 11:11:12'
}
[PSCustomObject]@{
id = 'Person 4'
date = [DateTime]'10/10/2017 10:42:19'
}
[PSCustomObject]@{
id = 'Person 5'
date = [DateTime]'10/10/2017 13:34:58'
}
)
$B = @{
MAX_Date = [DateTime]'02/03/2017 13:10:19 '
}
$A | Where-Object { $_.date -gt $B.MAX_Date } | Sort-Object id
#First we need to cast this string into a date so it will compare properly.
$Max_Date = Get-Date $b.MAX_Date
#Then we need an array to store the objects that we want to keep
$Dates_to_Keep = ()
#Now we can iterate through the array and check the date on each object.
Foreach ($person in $a){
#Again, casting this string as a date for accurate comparison.
$date = Get-Date $person.date
If ($date -ge $Max_Date){
$Dates_to_Keep = $Dates_to_Keep + $person
}
}
Write-Host $Dates_to_Keep