我可以格式化Get-Date cmdlet这样没有问题:

$date = Get-Date -format "yyyyMMdd"

但是,一旦我在变量中获得了日期,我该如何格式化它呢?下面的声明

$dateStr = $date -format "yyyMMdd"

返回以下错误:

“你必须提供价值表达 在-f的右边 运营商”


当前回答

我把我的dueDate字符串转换为日期时间,然后格式化它。

 [Datetime]::ParseExact($dueDate,'MM/dd/yyyy H:mm:ss',$null).ToString('MM/dd/yyyy') 

其他回答

如果你绝对需要使用-Format选项,那么就这样做:

$dateStr = Get-Date $date -Format "yyyMMdd"

然而

$dateStr = $date.toString('yyyMMdd')

可能更有效率…:)

如果你在cmd.exe中使用这个(在批处理文件中):

powershell -Command (Get-Date).ToString('yyyy-MM-dd')

我把我的dueDate字符串转换为日期时间,然后格式化它。

 [Datetime]::ParseExact($dueDate,'MM/dd/yyyy H:mm:ss',$null).ToString('MM/dd/yyyy') 

你可以做的一件事是:

$date.ToString("yyyyMMdd")

和在。net中一样:

$DateStr = $Date.ToString("yyyyMMdd")

Or:

$DateStr = '{0:yyyyMMdd}' -f $Date