如何在PowerShell中格式化date时间?
我可以格式化Get-Date
命令行,没有像这样的问题:
$date = Get-Date -format "yyyyMMdd"
但是一旦我有了一个variables的date ,我该如何格式化呢? 下面的声明
$dateStr = $date -format "yyyMMdd"
返回这个错误:
“您必须在”-f“运算符的右侧提供一个值expression式”
和你在.NET中一样。
$DateStr = $Date.ToString("yyyyMMdd")
要么
$DateStr = '{0:yyyyMMdd}' -f $Date
这个问题得到了解答,但是还缺less一些信息:
variables与Cmdlet
你在$Date
variables中有一个值,而-f
运算符在这种forms下工作: 'format string' -f values
。 如果您调用Get-Date -format "yyyyMMdd"
可以使用一些参数调用cmdlet 。 值“yyyyMMdd”是参数Format
值(尝试help Get-Date -param Format
)。
-f
操作员
有很多格式string,至less看part1和part2 。 她使用string.Format('format string', values')
。 可以把它看作'format-string' -f values
,因为-f
操作符和string.Format
方法非常相似(尽pipe存在一些差异(更多的信息请看Stack Overflow的问题: PowerShell的RHS -f操作员工作? )。
你可以做的一件事是:
$date.ToString("yyyyMMdd")
一个非常方便 – 但可能不是全部太高效的解决方法是使用成员函数GetDateTimeFormats()
,
$d = Get-Date $d.GetDateTimeFormats()
这将为date值输出一个大的string数组格式。 然后你可以通过[]
符select数组的其中一个元素,例如,
PS C:\> $d.GetDateTimeFormats()[12] Dienstag, 29. November 2016 19.14
一个简单而好的方法是:
$time = (Get-Date).ToString("yyyy:MM:dd")
或干脆
(Get-Date).ToString("yyyy:MM:dd")
如果你在这里使用这个在DOS中:
powershell -Command (Get-Date).ToString('yyyy-MM-dd')
如果你绝对需要使用-Format选项,那么如何做到这一点:
$dateStr = (Get-Date $date -Format "yyyMMdd")
然而
$dateStr = $date.toString('yyyMMdd')
可能是更高效.. 🙂