我可以格式化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的右边 运营商”
当前回答
来自@stej的回答非常翔实,但这里是一个简短的回答: 在其他选项中,您有3个简单的选项来格式化[System. System.]存储在变量中的DateTime:
将变量传递给Get-Date cmdlet: 获取日期-格式“HH:mm”$date 使用toString()方法: date.ToString美元(“HH: mm”) 使用复合格式: "{0:HH:mm}" -f $date
其他回答
如果你在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')
一个非常方便的——但可能不是非常有效的——解决方案是使用成员函数GetDateTimeFormats(),
$d = Get-Date
$d.GetDateTimeFormats()
这将输出date-value的格式化样式的大型字符串数组。然后,您可以通过[]-操作符选择数组中的一个元素,例如,
PS C:\> $d.GetDateTimeFormats()[12]
Dienstag, 29. November 2016 19.14
根据输出需要格式化日期和时间
如果要格式化日期并将字符串分配给变量。 我结合了PowerShell和. net来提供灵活性。
$oDate = '{0}' -f ([system.string]::format('{0:yyyyMMddHHmmss}',(Get-Date)))
这是如何工作的
PowerShell Operator - '{0}' -f (.....) .NET表示法- [system.string]::format('customformat',InputObject) 结合PowerShell和。net的自定义格式- '{0:yyyyMMddHHmmss}' PowerShell提供的输入对象cmdlet (Get-Date) 存储在PowerShell变量- $oDate中
例子
如果运行的日期和时间是2021年7月5日星期一5:45:22 PM(格式“{0:F}”)。
$oDate = 20210705174522
使用代码
您可以通过使用Microsoft . net自定义日期时间符号修改'yyyMMddHHmmss'来定制字符串以满足您的要求。
问题得到了回答,但还缺少一些信息:
变量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是如何工作的?)