Afficher la pageAnciennes révisionsLiens de retourHaut de page Cette page est en lecture seule. Vous pouvez afficher le texte source, mais ne pourrez pas le modifier. Contactez votre administrateur si vous pensez qu'il s'agit d'une erreur. ====== Gestion des dates en Powershell ====== <label type="info">Création</label> --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2019/02/27 20:45// 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''. * [[https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/get-date?view=powershell-6|Microsoft]] 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 ===== Le formatage peut être modifié avec le paramètre ''-Format'' suivi d'un ou plusieurs arguments indiquant le type de formatage. Ainsi avec : <sxh powershell>Get-Date vendredi 1 février 2019 14:05:09 </sxh> On obtient : |< 100% 10% 60% 30% >| ^ Argument ^ Explication ^ Exemple ^ | ''d'' |Affiche le jour du mois sur un ou deux chiffres de 1 à 31 |<sxh powershell>Get-Date -Format 'd' 1 </sxh>| | ''dd'' |Affiche le jour du mois sur deux chiffres de 01 à 31 |<sxh powershell>Get-Date -Format 'dd' 01 </sxh>| | ''ddd'' |Affiche le jour de la semaine en abréviation |<sxh powershell>Get-Date -Format 'ddd' ven. </sxh>| | ''dddd'' |Affiche le jour de la semaine en complet |<sxh powershell>Get-Date -Format 'dddd' vendredi </sxh>| | ''M'' |Affiche le mois sur un ou deux chiffres de 1 à 12 |<sxh powershell>Get-Date -Format 'M' 2 </sxh>| | ''MM'' |Affiche le mois sur deux chiffres de 01 à 12 |<sxh powershell>Get-Date -Format 'MM' 02 </sxh>| | ''MMM'' |Affiche le nom du mois en abréviation |<sxh powershell>Get-Date -Format 'MMM' fév. </sxh>| | ''MMMM'' |Affiche le nom du mois en complet |<sxh powershell>Get-Date -Format 'MMMM' février </sxh>| | ''yy'' |Affiche l'année deux chiffres |<sxh powershell>Get-Date -Format 'yy' 19 </sxh>| | ''yyyy'' |Affiche l'année sur quatre chiffres |<sxh powershell>Get-Date -Format 'yyyy' 2019 </sxh>| | ''h'' |Affiche l'heure de 1 à 12 |<sxh powershell>Get-Date -Format 'h' 2 </sxh>| | ''hh'' |Affiche l'heure de 01 à 12 |<sxh powershell>Get-Date -Format 'hh' 02 </sxh>| | ''H'' |Affiche l'heure de 1 à 24 |<sxh powershell>Get-Date -Format 'H' 2 </sxh>| | ''HH'' |Affiche l'heure de 01 à 24 |<sxh powershell>Get-Date -Format 'HH' 02 </sxh>| | ''m'' |Affiche les minutes de 0 à 59 |<sxh powershell>Get-Date -Format 'm' 5 </sxh>| | ''mm'' |Affiche les minutes de 00 à 59 |<sxh powershell>Get-Date -Format 'mm' 05 </sxh>| | ''s'' |Affiche les secondes de 0 à 59 |<sxh powershell>Get-Date -Format 's' 9 </sxh>| | ''ss'' |Affiche les secondes de 00 à 59 |<sxh powershell>Get-Date -Format 'ss' 09 </sxh>| | ''t'' |Affiche l'heure et les minutes |<sxh powershell>Get-Date -Format 't' 14:05 </sxh>| | ''z'' |Affiche le fuseau horaire |<sxh powershell>Get-Date -Format 'z' +1 </sxh>| | ''zz'' |Affiche le fuseau horaire sur deux chiffres |<sxh powershell>Get-Date -Format 'zz' +01 </sxh>| | ''zzz'' |Affiche le fuseau horaire avec l'intégralité du décalage |<sxh powershell>Get-Date -Format 'zzz' +01:00 </sxh>| | ''D'' |Affiche la journée complète |<sxh powershell>Get-Date -Format 'D' vendredi 1 février 2019 </sxh>| | ''G'' |Affiche la journée complète au format numérique suivi de l'heure. Pratique pour les logs. |<sxh powershell>Get-Date -Format 'G' 01/02/2019 14:05:09 </sxh>| 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 : |< 100% 10% 60% 30% >| ^ Argument ^ Explication ^ Retour ^ | ''%c'' |Date et heure en abréviation et américanisée |<sxh powershell>Get-Date -UFormat "%c" ven. févr. 1 14:05:09 2019 </sxh>| | ''%D'' |Date au format mm/dd/yy |<sxh powershell>Get-Date -UFormat "%D" 02/01/19 </sxh>| | ''%x'' |Comme ''%D'' mais en utilisant les préférences culturelles |<sxh powershell>Get-Date -UFormat "%x" 01/02/19 </sxh>| | ''%C'' |Affiche le siècle -1 |<sxh powershell>Get-Date -UFormat "%C" 20 </sxh>| | ''%Y'' ou ''%G'' |Affiche l'année complète |<sxh powershell>Get-Date -UFormat "%Y" 2019 </sxh>| | ''%y'' ou ''%g'' |Affiche l'année sur deux chiffres |<sxh powershell>Get-Date -UFormat "%y" 19 </sxh>| | ''%b'' ou ''%h'' |Affiche le mois en abréviation |<sxh powershell>Get-Date -UFormat "%b" févr. </sxh>| | ''%B'' |Affiche le mois en lettres |<sxh powershell>Get-Date -UFormat "%B" février </sxh>| | ''%m'' |Affiche le mois en chiffres |<sxh powershell>Get-Date -UFormat "%m" 02 </sxh>| | ''%W'' ou ''%U'' |Affiche le numéro de la semaine de 0 à 52 |<sxh powershell>Get-Date -UFormat "%W" 4 </sxh>| | ''%V'' |Affiche le numéro de la semaine de 1 à 53 |<sxh powershell>Get-Date -UFormat "%V" 5 </sxh>| | ''%a'' |Affiche le jour de la semaine en abréviation |<sxh powershell>Get-Date -UFormat "%a" ven. </sxh>| | ''%A'' |Affiche le jour de la semaine en lettres |<sxh powershell>Get-Date -UFormat "%A" vendredi </sxh>| | ''%u'' ou ''%w'' |Affiche le numéro de jour dans la semaine. La semaine commence le lundi. |<sxh powershell>Get-Date -UFormat "%u" 5 </sxh>| | ''%d'' |Affiche le numéro du jour dans le mois de 01 à 31 |<sxh powershell>Get-Date -UFormat "%d" 01 </sxh>| | ''%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. |<sxh powershell>Get-Date -UFormat "%e" 1 </sxh>| | ''%j'' |Affiche le numéro du jour dans l'année de 1 à 366 |<sxh powershell>Get-Date -UFormat "%j" 32 </sxh>| | ''%p'' |Affiche la demi-journée (AM ou PM) si la préférence culturelle l'indique sinon n'affiche rien. |<sxh powershell>Get-Date -UFormat "%p" PM </sxh>| | ''%T'' |Affiche l'heure complète sur 24h |<sxh powershell>Get-Date -UFormat "%T" 14:05:09 </sxh>| | ''%R'' |Affiche l'heure sans les secondes sur 24h |<sxh powershell>Get-Date -UFormat "%R" 14:05 </sxh>| | ''%r'' |Affiche l'heure complète sur 12h si la préférence culturelle l'utilise sinon équivalent à ''%T'' |<sxh powershell>Get-Date -UFormat "%r" 02:05:09 PM </sxh>| | ''%Z'' |Affiche le décalage horaire par rapport à l'UTC |<sxh powershell>Get-Date -UFormat "%Z" +01 </sxh>| | ''%H'' ou ''%k'' |Affiche l'heure uniquement sur 24h |<sxh powershell>Get-Date -UFormat "%H" 14 </sxh>| | ''%I'' ou ''%l'' |Affiche l'heure uniquement sur 12h |<sxh powershell>Get-Date -UFormat "%I" 02 </sxh>| | ''%M'' |Affiche les minutes |<sxh powershell>Get-Date -UFormat "%M" 05 </sxh>| | ''%S'' |Affiche les secondes |<sxh powershell>Get-Date -UFormat "%T" 09 </sxh>| É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 : <sxh powershell>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 </sxh> ===== Les propriétés ===== ''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 : <sxh powershell>Get-Date vendredi 1 février 2019 14:05:09 </sxh> On obtient : |< 100% 10% 55% 35% >| ^ Propiété ^ Explication ^ Exemple ^ | ''.Date'' |Renvoie la date à minuit |<sxh powershell>(Get-Date).Date vendredi 1 février 2019 00:00:00 </sxh>| | ''.Day'' |Renvoie le jour du mois |<sxh powershell>(Get-Date).Day 1 </sxh>| | ''.DayOfWeek'' |Renvoie le jour de la semaine (en anglais) |<sxh powershell>(Get-Date).DayOfWeek Friday </sxh>| | ''.DayOfYear'' |Renvoie le jour de l'année |<sxh powershell>(Get-Date).DayOfYear 32 </sxh>| | ''.Hour'' |Renvoie l'heure |<sxh powershell>(Get-Date).Hour 14 </sxh>| | ''.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'' |<sxh powershell>(Get-Date).Kind Unspecified </sxh>| | ''.Millisecond'' |Renvoie les millisecondes |<sxh powershell>(Get-Date).Millisecond 0 </sxh>| | ''.Minute'' |Renvoie les minutes |<sxh powershell>(Get-Date).Minute 5 </sxh>| | ''.Month'' |Renvoie le mois en chiffre |<sxh powershell>(Get-Date).Month 2 </sxh>| | ''.Second'' |Renvoie les secondes |<sxh powershell>(Get-Date).Second 9 </sxh>| | ''.Ticks'' |Renvoie l'heure complète au format de l'horloge système, soit le nomble d'impulsion de la pile. |<sxh powershell>(Get-Date).Ticks 636846267090000000 </sxh>| | ''.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. |<sxh powershell>(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 </sxh>| | ''.Year'' |Renvoie l'année |<sxh powershell>(Get-Date).Year 2019 </sxh>| | ''.DisplayHint'' |Indique si le résultat est une date seule (Date), une heure (Time) ou un ensemble date et heure (DateTime) |<sxh powershell>(Get-Date).DisplayHint DateTime </sxh>| | ''.DateTime'' |Renvoie la date au format DateTime, soit la date suivie de l'heure |<sxh powershell>(Get-Date).DateTime vendredi 1 février 2019 14:05:09 </sxh>| ===== Les méthodes ===== Les méthodes de ''Get-Date'' permettent de manipuler les dates. Ainsi avec : <sxh powershell>Get-Date vendredi 1 février 2019 14:05:09 </sxh> On obtient : |< 100% 10% 55% 35% >| ^ Méthode ^ Explication ^ Exemple ^ | ''.AddDays()'' |Ajoute un nombre de jours indiqués. Soustrait si le nombre est négatif. |<sxh powershell>(Get-Date).AddDays(-1) jeudi 31 janvier 2019 14:05:09 </sxh>| | ''.AddHours()'' |Ajoute un nombre d'heures indiquées. Soustrait si le nombre est négatif. |<sxh powershell>(Get-Date).AddHours(3) vendredi 1 février 2019 17:05:09 </sxh>| | ''.AddMilliseconds()'' |Ajoute un nombre de millisecondes indiquées. Soustrait si le nombre est négatif. |<sxh powershell>(Get-Date).AddMilliseconds(10000) vendredi 1 février 2019 14:05:19 </sxh>| | ''.AddMinutes()'' |Ajoute un nombre de minutes indiquées. Soustrait si le nombre est négatif. |<sxh powershell>(Get-Date).AddMinutes(-5) vendredi 1 février 2019 14:00:09 </sxh>| | ''.AddMonths()'' |Ajoute un nombre de mois indiqués. Soustrait si le nombre est négatif. |<sxh powershell>(Get-Date).AddMonths(2) lundi 1 avril 2019 14:05:09 </sxh>| | ''.AddSeconds()'' |Ajoute un nombre de secondes indiquées. Soustrait si le nombre est négatif. |<sxh powershell>(Get-Date).AddSeconds(-34) vendredi 1 février 2019 14:04:35 </sxh>| | ''.AddTicks()'' |Ajoute à un nombre d'impulsions indiqués. Soustrait si le nombre est négatif. |<sxh powershell>(Get-Date).AddTicks(2549858752) vendredi 1 février 2019 14:09:23 </sxh>| | ''.AddYears()'' |Ajoute un nombre d'années indiquées. Soustrait si le nombre est négatif. |<sxh powershell>(Get-Date).AddYears(4) mercredi 1 février 2023 14:05:09 </sxh>| Certaines méthodes nous renvoie des informations utiles sur une date. Par exemple : |< 100% 15% 50% 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'' |<sxh powershell>(Get-Date).IsDaylightSavingTime() false </sxh>| | ''.ToUniversalTime()'' |Renvoie la date au niveau du fuseau horaire UTC |<sxh powershell>(Get-Date).ToUniversalTime() vendredi 1 février 2019 13:05:09 </sxh>| | ''.ToShortDateString()'' |Renvoie la date au format court |<sxh powershell>(Get-Date).ToShortDateString() 01/02/2019 </sxh>| | ''.ToShortTimeString()'' |Renvoie l'heure au format court |<sxh powershell>(Get-Date).ToShortTimeString() 14:05 </sxh>| | ''.ToUniversalTime()'' |Renvoie la date au niveau du fuseau horaire local |<sxh powershell>(Get-Date).ToUniversalTime() vendredi 1 février 2019 15:05:09 </sxh>| ~~DISCUSSION~~ powershell_date.txt Dernière modification : 2021/03/05 15:54de nekan