我可以格式化Get-Date
cmdlet没有这样的问题:
$date = Get-Date -format "yyyyMMdd"
但是一旦我在变量中得到a date,我该如何格式化它?以下声明
$dateStr = $date -format "yyyMMdd"
返回此错误:
“您必须提供值表达式 在'-f'的右侧 运算符“
答案 0 :(得分:185)
答案 1 :(得分:22)
问题已得到解答,但缺少更多信息:
变量与Cmdlet
$Date
变量中有一个值,-f
运算符的格式为'format string' -f values
。Get-Date -format "yyyyMMdd"
。如果您致电Format
,则可以使用某些参数拨打cmdlet。值“yyyyMMdd”是参数help Get-Date -param Format
的值(尝试-f
)。
string.Format('format string', values')
运营商
有很多格式字符串。至少看part1和part2。她使用'format-string' -f values
。可以将其视为-f
,因为string.Format
运算符与{{1}}方法的工作方式非常相似(尽管存在一些差异(有关更多信息,请查看Stack Overflow上的问题: {{ 3}} 的)。
答案 2 :(得分:14)
你可以做的一件事是:
$date.ToString("yyyyMMdd")
答案 3 :(得分:13)
一个非常方便 - 但可能不是太有效 - 的解决方案是使用成员函数GetDateTimeFormats()
,
$d = Get-Date
$d.GetDateTimeFormats()
这会为日期值输出一个大型的字符串数组样式。然后,您可以通过[]
- 运算符选择数组中的一个元素,例如
PS C:\> $d.GetDateTimeFormats()[12]
Dienstag, 29. November 2016 19.14
答案 4 :(得分:9)
一种简单而美好的方式是:
$time = (Get-Date).ToString("yyyy:MM:dd")
或只是
(Get-Date).ToString("yyyy:MM:dd")
答案 5 :(得分:2)
如果你在DOS中使用它:
powershell -Command (Get-Date).ToString('yyyy-MM-dd')
答案 6 :(得分:2)
如果您绝对需要使用IntentCompat.FLAG_ACTIVITY_CLEAR_TASK
选项,请执行此操作:
-Format
然而
$dateStr = (Get-Date $date -Format "yyyMMdd")
可能更有效..:)
答案 7 :(得分:2)
我需要时间和格式上的一些细微变化。这对我来说很有效:
$((get-date).ToLocalTime()).ToString("yyyy-MM-dd HHmmss")
2019-08-16 215757
答案 8 :(得分:1)
非常有用的answer from @stej,但这是一个简短的答案: 在other options中,您有 3个简单选项来格式化存储在变量中的[System.DateTime]:
将变量传递到Get-Date cmdlet:
Get-Date -Format "HH:mm" $date
使用toString() method:
$date.ToString("HH:mm")
使用Composite formatting:
"{0:HH:mm}" -f $date
答案 9 :(得分:0)
对于任何试图格式化当前日期以供在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
即不要忘记使用“ ToUniversalTime()”
答案 10 :(得分:0)
您可以使用它来选择您想要的格式,然后将其粘贴到任何需要的地方。
$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."
答案 11 :(得分:0)
根据输出需要格式化日期时间
如果要格式化日期并将字符串分配给变量。 我结合了 PowerShell 和 .NET 来提供灵活性。
$oDate = '{0}' -f ([system.string]::format('{0:yyyyMMddHHmmss}',(Get-Date)))
工作原理
示例
如果运行的日期和时间是 2021 年 7 月 5 日星期一下午 5:45:22(格式“{0:F}”)。
使用代码
您可以通过使用 Microsoft .NET Custom Date Time Notation 修改“yyyMMddHHmmss”来自定义字符串以满足您的要求。