Ceci est une ancienne révision du document !


Gestion des dates en Powershell

La gestion des dates peut s'avérer crucial. On en a besoin pour dater un fichier, dater des logs, supprimer des anciens fichiers, etc… La commande de gestion de date sous Powershell est Get-Date.

Cette commande renvoie la date actuelle donnée par l'horloge interne de la machine et formatée pour être compréhensible par l'utilisateur.

Le formatage peut être modifié avec le paramètre -Format suivi d'un ou plusieurs arguments indiquant le type de formatage.

Ainsi avec :

Get-Date
vendredi 1 février 2019 14:05:09

On obtient :

Argument Explication Exemple
d Affiche le jour du mois sur un ou deux chiffres de 1 à 31
Get-Date -Format 'd'
1
dd Affiche le jour du mois sur deux chiffres de 01 à 31
Get-Date -Format 'dd'
01
ddd Affiche le jour de la semaine en abréviation
Get-Date -Format 'ddd'
ven.
dddd Affiche le jour de la semaine en complet
Get-Date -Format 'dddd'
vendredi 
M Affiche le mois sur un ou deux chiffres de 1 à 12
Get-Date -Format 'M'
2
MM Affiche le mois sur deux chiffres de 01 à 12
Get-Date -Format 'MM'
02
MMM Affiche le nom du mois en abréviation
Get-Date -Format 'MMM'
fév.
MMMM Affiche le nom du mois en complet
Get-Date -Format 'MMMM'
février 
yy Affiche l'année deux chiffres
Get-Date -Format 'yy'
19
yyyy Affiche l'année sur quatre chiffres
Get-Date -Format 'yyyy'
2019
h Affiche l'heure de 1 à 12
Get-Date -Format 'h'
2
hh Affiche l'heure de 01 à 12
Get-Date -Format 'hh'
02
H Affiche l'heure de 1 à 24
Get-Date -Format 'H'
2
HH Affiche l'heure de 01 à 24
Get-Date -Format 'HH'
02
m Affiche les minutes de 0 à 59
Get-Date -Format 'm'
5
mm Affiche les minutes de 00 à 59
Get-Date -Format 'mm'
05
s Affiche les secondes de 0 à 59
Get-Date -Format 's'
9
ss Affiche les secondes de 00 à 59
Get-Date -Format 'ss'
09
t Affiche l'heure et les minutes
Get-Date -Format 't'
14:05
z Affiche le fuseau horaire
Get-Date -Format 'z'
+1
zz Affiche le fuseau horaire sur deux chiffres
Get-Date -Format 'zz'
+01
zzz Affiche le fuseau horaire avec l'intégralité du décalage
Get-Date -Format 'zzz'
+01:00
D Affiche la journée complète
Get-Date -Format 'D'
vendredi 1 février 2019
G Affiche la journée complète au format numérique suivi de l'heure. Pratique pour les logs.
Get-Date -Format 'G'
01/02/2019 14:05:09

On peut aussi renvoyer un formatage UNIX grâce au paramètre -UFormat. Ainsi pour la date vendredi 1 février 2019 14:05:09, le retour de la commande Get-Date -UFormat $Args sera :

Argument Explication Retour
%c Date et heure en abréviation et américanisée
Get-Date -UFormat "%c"
ven. févr. 1 14:05:09 2019  
%D Date au format mm/dd/yy
Get-Date -UFormat "%D"
02/01/19    
%x Comme %D mais en utilisant les préférences culturelles
Get-Date -UFormat "%x"
01/02/19     
%C Affiche le siècle -1
Get-Date -UFormat "%C"
20     
%Y ou %G Affiche l'année complète
Get-Date -UFormat "%Y"
02019    
%y ou %g Affiche l'année sur deux chiffres
Get-Date -UFormat "%y"
19     
%b ou %h Affiche le mois en abréviation
Get-Date -UFormat "%b"
févr.     
%B Affiche le mois en lettres
Get-Date -UFormat "%B"
février       
%m Affiche le mois en chiffres
Get-Date -UFormat "%m"
02       
%W ou %U Affiche le numéro de la semaine de 0 à 52
Get-Date -UFormat "%W"
4       
%V Affiche le numéro de la semaine de 1 à 53
Get-Date -UFormat "%V"
5       
%a Affiche le jour de la semaine en abréviation
Get-Date -UFormat "%a"
ven.       
%A Affiche le jour de la semaine en lettres
Get-Date -UFormat "%A"
vendredi         
%u ou %w Affiche le numéro de jour dans la semaine. La semaine commence le lundi.
Get-Date -UFormat "%u"
5         
%d Affiche le numéro du jour dans le mois de 01 à 31
Get-Date -UFormat "%d"
01         
%e Affiche le numéro du jour dans le mois de 1 à 31. Les jours de 1 à 9 seront précédés d'un espace.
Get-Date -UFormat "%e"
 1         
%j Affiche le numéro du jour dans l'année de 1 à 366
Get-Date -UFormat "%j"
32         
%p Affiche la demi-journée (AM ou PM) si la préférence culturelle l'indique sinon n'affiche rien.
Get-Date -UFormat "%p"
PM         
%T Affiche l'heure complète sur 24h
Get-Date -UFormat "%T"
14:05:09         
%R Affiche l'heure sans les secondes sur 24h
Get-Date -UFormat "%R"
14:05         
%r Affiche l'heure complète sur 12h si la préférence culturelle l'utilise sinon équivalent à %T
Get-Date -UFormat "%r"
02:05:09 PM        
%Z Affiche le décalage horaire par rapport à l'UTC
Get-Date -UFormat "%Z"
+01        
%H ou %k Affiche l'heure uniquement sur 24h
Get-Date -UFormat "%H"
14        
%I ou %l Affiche l'heure uniquement sur 12h
Get-Date -UFormat "%I"
02        
%M Affiche les minutes
Get-Date -UFormat "%M"
05        
%S Affiche les secondes
Get-Date -UFormat "%T"
09       

Évidemment, les arguments de -Format ou de -UFormat peuvent être ajoutés les uns aux autres mais -Format et -UFormat ne doivent pas être mélangés. Par exemple :

Get-Date
vendredi 1 février 2019 14:05:09
 
Get-Date -Format 'hh:mm:ss dd/MM/yy'
14:05:09 01/02/19
 
Get-Date -UFormat "%d-%m-%Y %R"
01-02-19 14:05

Get-Date embarque un certain nombre de propriétés. Ces dernières permettent d'obtenir un élément isolé de la date. Il s'agit d'une alternative au formatage.

Ainsi avec :

Get-Date
vendredi 1 février 2019 14:05:09

On obtient :

Propiété Explication Exemple
.Date Renvoie la date à minuit
(Get-Date).Date
vendredi 1 février 2019 00:00:00
.Day Renvoie le jour du mois
(Get-Date).Day
1
.DayOfWeek Renvoie le jour de la semaine (en anglais)
(Get-Date).DayOfWeek
Friday
.DayOfYear Renvoie le jour de l'année
(Get-Date).DayOfYear
32
.Hour Renvoie l'heure
(Get-Date).Hour
14
.Kind Renvoie une information sur la référence de l'heure. Cette référence peut être ToLocalTime si l'heure est présentée sur en fonction de l'heure locale ou ToUniversalTime si l'heure est présentée en fonction du fuseau UTC. Par défaut et quand aucune indication n'est spécifiée, la propriété renvoie Unspecified
(Get-Date).Kind
Unspecified
.Millisecond Renvoie les millisecondes
(Get-Date).Millisecond
0
.Minute Renvoie les minutes
(Get-Date).Minute
5
.Month Renvoie le mois en chiffre
(Get-Date).Month
2
.Second Renvoie les secondes
(Get-Date).Second
9
.Ticks Renvoie l'heure complète au format de l'horloge système, soit le nomble d'impulsion de la pile.
(Get-Date).Ticks
636846267090000000
.TimeOfDay Renvoie un tableau contenant la différence de temps entre une date et une autre. Si la propriété n'est extraire que d'une seule date, la référence sera la même date à minuit (soit (Get-Date).Date). Les éléments du tableau sont les jours, les heures, les minutes, les secondes, les millisecondes, l'horloge système (Ticks), la différence totale en jours, en heure, en minutes, en seconde et en millisecondes.
(Get-Date).TimeOfDay
Days              : 0
Hours             : 14
Minutes           : 5
Seconds           : 9
Milliseconds      : 0
Ticks             : 507090000000
TotalDays         : 0.586909722222222
TotalHours        : 14.0858333333333
TotalMinutes      : 845.15
TotalSeconds      : 50709
TotalMilliseconds : 50709000
.Year Renvoie l'année
(Get-Date).Year
2019
.DisplayHint Indique si le résultat est une date seule (Date), une heure (Time) ou un ensemble date et heure (DateTime)
(Get-Date).DisplayHint
DateTime
.DateTime Renvoie la date au format DateTime, soit la date suivie de l'heure
(Get-Date).DateTime
vendredi 1 février 2019 14:05:09

Les méthodes de Get-Date permettent de manipuler les dates.

Ainsi avec :

Get-Date
vendredi 1 février 2019 14:05:09

On obtient :

Méthode Explication Exemple
.AddDays() Ajoute un nombre de jours indiqués. Soustrait si le nombre est négatif.
(Get-Date).AddDays(-1)
jeudi 31 janvier 2019 14:05:09
.AddHours() Ajoute un nombre d'heures indiquées. Soustrait si le nombre est négatif.
(Get-Date).AddHours(3)
vendredi 1 février 2019 17:05:09
.AddMilliseconds() Ajoute un nombre de millisecondes indiquées. Soustrait si le nombre est négatif.
(Get-Date).AddMilliseconds(10000)
vendredi 1 février 2019 14:05:19
.AddMinutes() Ajoute un nombre de minutes indiquées. Soustrait si le nombre est négatif.
(Get-Date).AddMinutes(-5)
vendredi 1 février 2019 14:00:09
.AddMonths() Ajoute un nombre de mois indiqués. Soustrait si le nombre est négatif.
(Get-Date).AddMonths(2)
lundi 1 avril 2019 14:05:09
.AddSeconds() Ajoute un nombre de secondes indiquées. Soustrait si le nombre est négatif.
(Get-Date).AddSeconds(-34)
vendredi 1 février 2019 14:04:35
.AddTicks() Ajoute à un nombre d'impulsions indiqués. Soustrait si le nombre est négatif.
(Get-Date).AddTicks(2549858752)
vendredi 1 février 2019 14:09:23
.AddYears() Ajoute un nombre d'années indiquées. Soustrait si le nombre est négatif.
(Get-Date).AddYears(4)
mercredi 1 février 2023 14:05:09

Certaines méthodes nous renvoie des informations utiles sur une date. Par exemple :

< 100% 10% 55% 35% >|

Méthode Explication Exemple
.IsDaylightSavingTime() Indique si la date est à l'heure d'été avec $true. Si c'est l'heure d'hiver, ce sera $false
(Get-Date).IsDaylightSavingTime()
false
.ToUniversalTime() Renvoie la date au niveau du fuseau horaire UTC
(Get-Date).ToUniversalTime()
vendredi 1 février 2019 13:05:09
.ToShortDateString() Renvoie la date au format court
(Get-Date).ToShortDateString()
01/02/2019
.ToShortTimeString() Renvoie l'heure au format court
(Get-Date).ToShortTimeString()
14:05
.ToUniversalTime() Renvoie la date au niveau du fuseau horaire local
(Get-Date).ToUniversalTime()
vendredi 1 février 2019 15:05:09

Nicolas THOREZ 2019/02/27 20:45

Entrer votre commentaire. La syntaxe wiki est autorisée:
 
  • powershell_date.1551284167.txt.gz
  • Dernière modification : 2019/02/27 15:16
  • (modification externe)