Je peux formater le Get-Date
cmdlet sans problème de cette manière :
$date = Get-Date -format "yyyyMMdd"
Mais une fois que j'ai une date dans une variable, comment la formater ? La commande ci-dessous
$dateStr = $date -format "yyyMMdd"
renvoie cette erreur :
"Vous devez fournir une expression de valeur du côté droit de l'opérateur '-f'"
5 votes
Je souhaitais en fait que cette syntaxe fonctionne.
$date -format "yyyMMdd"
est beaucoup plus intuitive pour formater un seul objet que'{0:yyyyMMdd}' -f $date
.0 votes
En aparté : PowerShell possède un opérateur
-f
(avec la syntaxe indiquée dans la réponse acceptée), mais aucun opérateur-format
. Le message d'erreur se plaint du fait queormat
n'est pas un opérande RHS valide, mais notez que les versions récentes de PowerShell émettent en réalité un message d'erreur différent et plus utile :Unexpected token '-format' in expression or statement
1 votes
@orad votre commentaire fait beaucoup plus pour expliquer la syntaxe boilerplate "{0:...}" que la réponse en tête et acceptée qui le suggère. Merci. (Votre commentaire nous indique qu'il s'agit d'un cas particulier de quelque chose qui prend en charge plusieurs choses formatées à la fois, ce qui nous permet de réaliser que nous sommes en train de regarder quelque chose de bien plus général que simplement du sucre syntaxique pour
.ToString(...)
... et que, combiné à une expérience de programmation suffisante, nous pouvons deviner que les chaînes de format utilisent des références indexées à zéro des objets interpolés, et utilisent {} pour envelopper les espaces réservés.)