Ev.*_*Ev. 138 powershell datetime
我可以格式化Get-Datecmdlet没有这样的问题:
$date = Get-Date -format "yyyyMMdd"
Run Code Online (Sandbox Code Playgroud)
但是一旦我在变量中得到了一个日期,我该如何格式化呢?以下声明
$dateStr = $date -format "yyyMMdd"
Run Code Online (Sandbox Code Playgroud)
返回此错误:
"你必须在'-f'运算符的右侧提供一个值表达式"
Jos*_*osh 201
与在.NET中一样:
$DateStr = $Date.ToString("yyyyMMdd")
Run Code Online (Sandbox Code Playgroud)
要么:
$DateStr = '{0:yyyyMMdd}' -f $Date
Run Code Online (Sandbox Code Playgroud)
ste*_*tej 24
问题已得到解答,但缺少更多信息:
变量与Cmdlet
您在$Date变量中有一个值,-f运算符可以以这种形式工作:'format string' -f values.如果您打电话Get-Date -format "yyyyMMdd",则调用带有一些参数的cmdlet.值"yyyyMMdd"是参数Format(try help Get-Date -param Format)的值.
-f 操作者
有很多格式字符串.至少看看part1和part2.她使用string.Format('format string', values').可以把它想象成'format-string' -f values,因为-f运算符与string.Format方法的工作方式非常相似(尽管存在一些差异(有关更多信息,请参阅Stack Overflow中的问题:PowerShell的-f运算符的RHS 究竟是如何工作的?).
dav*_*igh 17
一个非常方便 - 但可能不是太有效 - 的解决方案是使用成员函数GetDateTimeFormats(),
$d = Get-Date
$d.GetDateTimeFormats()
Run Code Online (Sandbox Code Playgroud)
这将输出日期值的大型字符串数组样式.然后,您可以通过[]-operator 选择数组中的一个元素,例如,
PS C:\> $d.GetDateTimeFormats()[12]
Dienstag, 29. November 2016 19.14
Run Code Online (Sandbox Code Playgroud)
Ste*_*ler 11
一个简单而好的方法是:
$time = (Get-Date).ToString("yyyy:MM:dd")
或者干脆
(Get-Date).ToString("yyyy:MM:dd")
如果您绝对需要使用该-Format选项,请执行以下操作:
$dateStr = Get-Date $date -Format "yyyMMdd"
Run Code Online (Sandbox Code Playgroud)
然而
$dateStr = $date.toString('yyyMMdd')
Run Code Online (Sandbox Code Playgroud)
可能更有效.. :)
如果您在这里使用它cmd.exe(在批处理文件中):
powershell -Command (Get-Date).ToString('yyyy-MM-dd')
Run Code Online (Sandbox Code Playgroud)
@stej 提供的信息非常丰富,但这里有一个简短的答案:在其他选项中,您有3 个简单的选项来格式化存储在变量中的 [System.DateTime]:
将变量传递给Get-Date cmdlet:
Get-Date -Format "HH:mm" $date
使用toString() 方法:
$date.ToString("HH:mm")
使用复合格式:
"{0:HH:mm}" -f $date
对于试图格式化当前日期以用于 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
Run Code Online (Sandbox Code Playgroud)
即不要忘记使用“ToUniversalTime()”
我需要时间和格式上的细微变化。这对我的目的很有用:
$((get-date).ToLocalTime()).ToString("yyyy-MM-dd HHmmss")
Run Code Online (Sandbox Code Playgroud)
2019-08-16 215757
根据评论中的@mklement0,这应该产生相同的结果:
(get-date).ToString("yyyy-MM-dd HHmmss")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
395862 次 |
| 最近记录: |