我可以格式化Get-Date cmdlet这样没有问题:
$date = Get-Date -format "yyyyMMdd"
但是,一旦我在变量中获得了日期,我该如何格式化它呢?下面的声明
$dateStr = $date -format "yyyMMdd"
返回以下错误:
“你必须提供价值表达 在-f的右边 运营商”
我可以格式化Get-Date cmdlet这样没有问题:
$date = Get-Date -format "yyyyMMdd"
但是,一旦我在变量中获得了日期,我该如何格式化它呢?下面的声明
$dateStr = $date -format "yyyMMdd"
返回以下错误:
“你必须提供价值表达 在-f的右边 运营商”
当前回答
你可以用它来选择你想要的格式,然后在任何需要的地方跳过它。
$DTFormats = (Get-Date).GetDateTimeFormats()
$Formats = @()
$i=0
While ($i -lt $DTFormats.Count){
$row = [PSCustomObject]@{
'IndexNumber' = $i
'DateTime Format' = $DTFormats[$i]
}
$Formats += $row
$i++
}
$DTSelection = ($Formats | Out-GridView -OutputMode Single -Title 'Select DateTime Format').IndexNumber
$MyDTFormat = "(Get-Date).GetDateTimeFormats()[$DTSelection]"
Write-Host " "
Write-Host " Use the following code snippet to get the DateTime format you selected:"
Write-Host " $MyDTFormat" -ForegroundColor Green
Write-Host " "
$MyDTFormat | Clip
Write-Host " The code snippet has been copied to your clipboard. Paste snippet where needed."
其他回答
一个简单而又好的方法是:
$time = (Get-Date).ToString("yyyy:MM:dd")
一个非常方便的——但可能不是非常有效的——解决方案是使用成员函数GetDateTimeFormats(),
$d = Get-Date
$d.GetDateTimeFormats()
这将输出date-value的格式化样式的大型字符串数组。然后,您可以通过[]-操作符选择数组中的一个元素,例如,
PS C:\> $d.GetDateTimeFormats()[12]
Dienstag, 29. November 2016 19.14
和在。net中一样:
$DateStr = $Date.ToString("yyyyMMdd")
Or:
$DateStr = '{0:yyyyMMdd}' -f $Date
你可以做的一件事是:
$date.ToString("yyyyMMdd")
如果你在cmd.exe中使用这个(在批处理文件中):
powershell -Command (Get-Date).ToString('yyyy-MM-dd')