web-dev-qa-db-fra.com

Obtenir la différence de nombre de jours des deux dates à Powershell

J'essaie d'obtenir la différence de nombre de jours dans Windows PowerShell. J'extrais la dernière date de l'année, c.-à-d. 20171231 (aaaaMMjj) à partir d'un fichier texte que j'ai stocké localement dans ce fichier.

Voici le code ci-dessous que je suis en train d'essayer mais que je ne parviens pas à obtenir la différence de jours, j'obtiens une mauvaise sortie en soustrayant directement, si je convertis la chaîne extraite du fichier et que je la soustrais ensuite avec le type de date obtenir la mauvaise sortie.

$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
7
Karan

Utilisez New-TimeSpan comme il représente un intervalle de temps . Ainsi,

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

$ DateStr sera une chaîne, il ne peut donc pas être analysé comme une date. Vous pouvez également utiliser new-timespan pour obtenir la différence entre deux dates. 

$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
2
Anthony Allen

Excellentes réponses des autres mais j'utilise souvent la fonction Date-Diff (puissante et bien connue des développeurs). Voir exemple ci-dessous:

Using Namespace Microsoft.VisualBasic
Add-Type  -AssemblyName  Microsoft.VisualBasic
$beg = Get-Date '2019-01-01'
$end = Get-Date
[DateAndTime]::DateDiff([DateInterval]::Day, $beg, $end)

HTH

0
Eddie Kumar
$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
0
Esperento57