PowerShell : convertir une variable string en date

I. Présentation

Ce n'est pas nouveau et ce n'est pas propre à PowerShell non plus, mais chaque variable doit avoir un type, par exemple "string" pour une chaîne de caractères, "int" pour une valeur numérique ou encore "datetime" pour une date.

Lorsque l'on compare deux valeurs, par exemple pour savoir s'il y en a une plus grande que l'autre, on peut obtenir un résultat incohérent. Cette incohérence peut s'expliquer à cause de deux variables qui ne sont pas du même type. Récemment, j'ai eu un problème dans un script en comparant une date saisie dans une interface graphique (type string) et une date récupérée à l'aide de Get-Date (type datetime). La date saisie était "plus grande" que la date du jour récupérée par Get-Date et pourtant le script indiquait l'inverse : le problème venait des variables qui n'étaient pas du même type.

Ce qui m'amène à vous expliquer comment convertir une variable string en datetime ? C'est parti...!

II. Conversion : string en date

Prenons une variable nommée $DateString ayant la valeur "28/08/2020" :

$DateString = "28/08/2020"

Si l'on regarde le type de cette variable, on peut voir qu'il s'agit bien d'une variable de type "string" :

$DateString.GetType()

Maintenant, nous allons convertir notre $DateString de type string en type datetime grâce à la méthode "[Datetime]::ParseExact". Pour réaliser cette opération, c'est assez simple il y a deux valeurs indispensables : la valeur à convertir ($DateString) et le format de destination. Dans cet exemple, je souhaite un format "jour / mois / année", ce qui donne "dd/MM/yyyy", tout en sachant que datetime impose également d'avoir l'heure : elle sera mise à 00:00:00 automatiquement.

Ce qui donne :

$DateString = [Datetime]::ParseExact($DateString, 'dd/MM/yyyy', $null)

Désormais, la valeur de $DateString est : vendredi 28 août 2020 00:00:00

Si l'on vérifie le type de notre variable $DateString, nous pouvons voir qu'elle est bien de type "datetime". Le tour est joué ! ?

? Manipuler la date en PowerShell

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian BURNEL

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

Nombre de posts de cet auteur : 5561.Voir tous les posts

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.