我可以格式化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的右边 运营商”
当前回答
对于任何试图格式化当前日期以用于HTTP报头的人,请使用“r”格式(RFC1123的缩写),但请注意警告…
PS C:\Users\Me> (get-date).toString("r")
Thu, 16 May 2019 09:20:13 GMT
PS C:\Users\Me> get-date -format r
Thu, 16 May 2019 09:21:01 GMT
PS C:\Users\Me> (get-date).ToUniversalTime().toString("r")
Thu, 16 May 2019 16:21:37 GMT
例如,不要忘记使用“tuniversal()”
其他回答
我把我的dueDate字符串转换为日期时间,然后格式化它。
[Datetime]::ParseExact($dueDate,'MM/dd/yyyy H:mm:ss',$null).ToString('MM/dd/yyyy')
如果你在cmd.exe中使用这个(在批处理文件中):
powershell -Command (Get-Date).ToString('yyyy-MM-dd')
我需要时间和稍微改变一下格式。这对我的目的很有效:
$((get-date).ToLocalTime()).ToString("yyyy-MM-dd HHmmss")
2019-08-16 215757
根据评论中的@mklement0,这应该会产生相同的结果:
(get-date).ToString("yyyy-MM-dd HHmmss")
如果你绝对需要使用-Format选项,那么就这样做:
$dateStr = Get-Date $date -Format "yyyMMdd"
然而
$dateStr = $date.toString('yyyMMdd')
可能更有效率…:)
问题得到了回答,但还缺少一些信息:
变量vs. Cmdlet
你在$Date变量中有一个值,-f操作符以这种形式工作:'format string' -f values。如果调用Get-Date -format "yyyyMMdd",则调用带有一些参数的cmdlet。值“yyyyMMdd”是参数Format的值(请尝试help Get-Date -param Format)。
- f运营商
有很多格式字符串。至少看一下第一部分和第二部分。她用绳子。格式('格式字符串',值')。可以把它看作是'format-string' -f值,因为-f操作符的工作原理与字符串非常相似。格式方法(尽管有一些区别(要了解更多信息,请参阅Stack Overflow: PowerShell的-f操作符的RHS是如何工作的?)