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