如何在powershell中将日期为20.02.2017的字符串数组转换为yyyyMMdd格式

时间:2017-02-02 05:04:56

标签: powershell scripting powershell-v4.0

我有一个数组列表,其中包含如下所示的字符串

2017年2月17日 2017年2月28日 2017年1月3日

我想将其转换为yyyyMMdd格式,以便我可以将这些日期与当前日期进行比较。我尝试过使用ParseExact,但它没有用。

`

5 个答案:

答案 0 :(得分:1)

可能取决于您的语言环境,但请从以下内容开始:

$d,$m,$y = "28.2.2017" -split "\."
$date = [DateTime]::Parse($("{0}/{1}/{2}" -f $m, $d, $y))
$date.ToString("yyyyMMdd")

根据需要进行调整以使用阵列。

答案 1 :(得分:1)

#you can format string to date like this
[DateTime]::ParseExact("17.2.2017", 'd.M.yyyy', $null)

#for your string with all dates
$dates="17.2.2017 28.2.2017 11.03.2017"
-split $dates | %{[System.DateTime]::ParseExact($_, 'd.M.yyyy', $null)}

答案 2 :(得分:0)

您可以尝试:

$a ="17.2.2017 28.2.2017 1.3.2017"
$a -split ' ' | % {$b = $_ -split '\.'; Get-Date -Day $b[0] -Month $b[1] -Year $b[2]}

如果你有一系列日期,你只需删除第一个分割:

$a ="17.2.2017","28.2.2017","1.3.2017"
$a | % {$b = $_ -split '\.'; Get-Date -Day $b[0] -Month $b[1] -Year $b[2]}

仅限一个日期:

$a ="17.2.2017"
$b = $a -split '\.'
$date = Get-Date -Day $b[0] -Month $b[1] -Year $b[2]}
$sate.ToString("yyyyMMdd")

答案 3 :(得分:0)

$d,$m,$y='28.2.2017'.split('.')
'0'*(4-$y.length)+$y+'0'*(2-$m.length)+$m+'0'*(2-$d.length)+$d

答案 4 :(得分:0)

这就是我所做的&有用。

$Date1 = -split $Date | %{[System.DateTime]::ParseExact($_, 'd.M.yyyy', $null)} $Date2 = $Date1.ToString("yyyyMMdd")