Подтвердить что ты не робот

PowerShell: сравнение дат

Я запрашиваю источник данных для дат. В зависимости от объекта, который я ищу, у него может быть больше даты, связанной с ним.

get-date ($Output | Select-Object -ExpandProperty "Date")

Пример вывода выглядит так:

Monday, April 08, 2013 12:00:00 AM
Friday, April 08, 2011 12:00:00 AM

Я хотел бы сравнить эти даты и вернуться к тому, какой из них будет представлен далее в будущем.

4b9b3361

Ответ 1

Так как Get-Date возвращает объект DateTime, вы можете сравнивать их напрямую. Пример:

(get-date 2010-01-02) -lt (get-date 2010-01-01)

вернет false.

Ответ 2

Поздний, но более полный ответ в плане получения самой продвинутой даты из $Output

## Q:\test\2011\02\SO_5097125.ps1
## simulate object input with a here string 
$Output = @"
"Date"
"Monday, April 08, 2013 12:00:00 AM"
"Friday, April 08, 2011 12:00:00 AM"
"@ -split '\r?\n' | ConvertFrom-Csv

## use Get-Date and calculated property in a pipeline
$Output | Select-Object @{n='Date';e={Get-Date $_.Date}} |
    Sort-Object Date | Select-Object -Last 1 -Expand Date

## use Get-Date in a ForEach-Object
$Output.Date | ForEach-Object{Get-Date $_} |
    Sort-Object | Select-Object -Last 1

## use [datetime]::ParseExact
## the following will only work if your locale is English for day, month day abbrev.
$Output.Date | ForEach-Object{
    [datetime]::ParseExact($_,'dddd, MMMM dd, yyyy hh:mm:ss tt',$Null)
} | Sort-Object | Select-Object -Last 1

## for non English locales
$Output.Date | ForEach-Object{
    [datetime]::ParseExact($_,'dddd, MMMM dd, yyyy hh:mm:ss tt',[cultureinfo]::InvariantCulture)
} | Sort-Object | Select-Object -Last 1

## in case the day month abbreviations are in other languages, here German
## simulate object input with a here string 
$Output = @"
"Date"
"Montag, April 08, 2013 00:00:00"
"Freidag, April 08, 2011 00:00:00"
"@ -split '\r?\n' | ConvertFrom-Csv
$CIDE = New-Object System.Globalization.CultureInfo("de-DE")
$Output.Date | ForEach-Object{
    [datetime]::ParseExact($_,'dddd, MMMM dd, yyyy HH:mm:ss',$CIDE)
} | Sort-Object | Select-Object -Last 1