반응형
PowerShell: 날짜 비교
날짜에 대한 데이터 소스를 쿼리하고 있습니다.검색하는 항목에 따라 연결된 날짜가 더 많을 수 있습니다.
get-date ($Output | Select-Object -ExpandProperty "Date")
출력의 예는 다음과 같습니다.
Monday, April 08, 2013 12:00:00 AM
Friday, April 08, 2011 12:00:00 AM
저는 이 날짜들을 비교하고 미래로 설정된 날짜를 반환하고 싶습니다.
~하듯이Get-Date
직접 비교할 수 있는 DateTime 개체를 반환합니다.예:
(get-date 2010-01-02) -lt (get-date 2010-01-01)
거짓으로 반환됩니다.
단순히 "-lt"를 확인하는 것 외에 얼마나 강력할 수 있는지 보여주고 싶었습니다.
예:Windows 이벤트 뷰 애플리케이션 로그에서 걸리는 시간 차이를 계산하는 데 사용했습니다.
두 날짜 시간 간의 차이를 가져옵니다.
PS> $Obj = ((get-date "10/22/2020 12:51:1") - (get-date "10/22/2020 12:20:1 "))
생성된 개체:
PS> $Obj
Days : 0
Hours : 0
Minutes : 31
Seconds : 0
Milliseconds : 0
Ticks : 18600000000
TotalDays : 0.0215277777777778
TotalHours : 0.516666666666667
TotalMinutes : 31
TotalSeconds : 1860
TotalMilliseconds : 1860000
항목에 직접 액세스:
PS> $Obj.Minutes
31
가장 빠른 날짜를 얻을 수 있다는 점에서 늦었지만 더 완벽한 답변$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
당신이 시간도 포함하고 싶어하는 것을 고려하여 샘플을 포함했습니다.ISO8601에 datetime을 넣었기 때문에 지역에 구애받지 않는 방식으로 작동합니다.
2013년 4월 8일 월요일 오전 12:00:00, 2011년 4월 8일 금요일 오전 12:00:00
(Get-date "2013-04-08T00:00:00") -lt (Get-Date "2011-04-08T00:00:00")
거짓의
언급URL : https://stackoverflow.com/questions/5097125/powershell-comparing-dates
반응형
'programing' 카테고리의 다른 글
Android 4.4(KitKat)의 Android Gallery는 Intent에 대해 다른 URI를 반환합니다.작업_GET_Content (0) | 2023.08.31 |
---|---|
jQuery 양식 serialize - 빈 문자열 (0) | 2023.08.31 |
JPA와 Spring을 사용하여 목록에 필드가 있는 구별되는 행을 찾는 방법은 무엇입니까? (0) | 2023.08.31 |
Swift - 하위 클래스에 의해 재정의되어야 하는 클래스 메서드 (0) | 2023.08.31 |
Internet Explorer 11 "스토리지 부족" 오류 (0) | 2023.08.26 |