我尝试了很多不同的方式,但我似乎无法做到这一点。
这是我到目前为止所尝试的代码......
[String]$dateValue = '20161212'
[String]$dateStamp = $dateValue -f (Get-Date)
[String]$dateStamp2 = ([datetime]::parseexact($dateValue, "yyyyMMdd", [System.Globalization.CultureInfo]::InvariantCulture)).Date
[String]$dateStamp3 = ([datetime]::FromFileTime($dateValue)).ToString('g')
Write-Host '$dateStamp = ' $dateStamp
Write-Host '$dateStamp2 = ' $dateStamp2
Write-Host '$dateStamp3 = ' $dateStamp3
$dateStamp = 20161212
$dateStamp2 = 12/12/2016 00:00:00
$dateStamp3 = 12/31/1600 5:00 PM
$dateStamp = 12/12/2016
任何想法?
答案 0 :(得分:6)
一旦你有了一个datetime对象,很容易将它转换成你需要的任何字符串格式。第二次尝试你是如此接近。添加ToString
允许您指定字符串格式。
([datetime]::parseexact($dateValue, "yyyyMMdd", [System.Globalization.CultureInfo]::InvariantCulture)).ToString("dd/MM/yyyy")
答案 1 :(得分:1)
鉴于你有一个文化不变的字符串作为输入,并且你想要一个固定的输出格式,你也可以执行字符串解析,而不需要转换为中间[datetime]
实例:
> '20161213' -replace '\d{2}(\d{2})(\d{2})(\d{2})', '$2/$3/$1'
12/13/16
请注意,我已将当天更改为与月份不同,以更好地突出显示重新格式化。
但一般情况下,Nick's helpful answer中展示的基于[datetime]
的方法可为您提供最大的灵活性。