source

Powershell에서 두 날짜 간의 일 수 차이를 가져오는 중

manysource 2023. 8. 13. 09:50

Powershell에서 두 날짜 간의 일 수 차이를 가져오는 중

Windows powershell에서 날짜 차이를 확인하려고 합니다. 올해의 마지막 날짜를 추출합니다. 즉,20171231(yyyyMMdd)로컬로 저장한 텍스트 파일에서 검색할 수 있습니다.

아래 코드는 제가 시도하고 있지만 날짜 차이를 얻을 수 없습니다. 파일에서 추출된 문자열을 변환한 다음 날짜 유형으로 빼면 직접 감산하여 잘못된 출력을 얻는 중입니다.

$DateStr = (Get-Date).ToString("yyyyMMdd")

$content = Get-Content C:\Users\Date.txt 

$diff = $content.ToString();

#Convert it to the date type
$diff = [datetime]::parseexact($diff, 'yyyyMMdd', $null)

#$diff3 = $diff - $DateStr

사용하다New-TimeSpan시간 간격을 나타내기 때문입니다.이렇게.

$d1 = '2017-01-01'
$d2 = '2017-05-01'
$ts = New-TimeSpan -Start $d1 -End $d2
$ts.Days # Check results
120

현재 날짜와 미래 날짜 간의 차이를 확인할 수 있는 빠르고 더러운 한 줄 파워셸 스크립트:

[math]::Ceiling((([DateTime]'mm-dd-yyyy')-(Get-Date)).TotalDays)

$DateStr은 문자열이 되므로 날짜로 구문 분석할 수 없습니다.새 시간 간격을 사용하여 두 날짜 간의 차이를 확인할 수도 있습니다.

$Date = Get-Date

$diff = Get-Content C:\Users\Date.txt -raw

#Convert it to the date type
$diff = [datetime]::parseexact($diff, 'yyyyMMdd', $null)

$diff3 = New-TimeSpan -Start $diff -end $Date

#Number of days
$diff3.days

다른 사람들의 훌륭한 답변이지만 나는 종종 사용합니다.Date-Diff기능(강력하고 개발자들에게 잘 알려진 기능).아래 예를 참조하십시오.

Using Namespace Microsoft.VisualBasic
Add-Type  -AssemblyName  Microsoft.VisualBasic
$start = Get-Date '2019-01-01'  #Convert string into Date type.
$end = Get-Date
[DateAndTime]::DateDiff([DateInterval]::Day, $start, $end)

편집: PowerShell의 새 버전이 지원될 것으로 보입니다.NET 7의 경우 조립품을 추가할 필요가 없습니다.

HTH

$Date = Get-Date

$diff = Get-Content C:\Users\Date.txt -raw

#Convert it to the date type
$diff = [datetime]::parseexact($diff, 'yyyyMMdd', $null)

#simply difference between dates give you a timespan, take days
($diff - $Date).Day

날짜/시간 개체로 변환하는 경우 날짜/시간 속성을 확인하는 것은 매우 간단합니다.이것은 시간에도 효과가 있습니다.

[datetime]'9/3' - [datetime]'9/1' | % days

2


[datetime]'10:30' - [datetime]'9:30' | % hours

1

설명

바닥 또는 천장을 사용하여 두 날짜 사이의 전체 일 수를 구할 수 있습니다. 반올림하거나 반올림하려면 [math]를 사용하십시오.:대신 둥글어집니다.

예:

긍정적인 가치로서:

$pastDate = (Get-Date).AddDays(-44.9)     
[math]::Floor(((Get-Date) - $pastDate).TotalDays)
44

음수 값으로:

$pastDate = (Get-Date).AddDays(-44.9) 
[math]::Ceiling(($pastDate-(Get-Date)).TotalDays)
-44

언급URL : https://stackoverflow.com/questions/44151502/getting-the-of-days-difference-between-two-dates-in-powershell