PowerShell - 将日期格式化为yyMMdd格式

时间:2016-04-28 15:25:03

标签: date powershell format

我运行一个传递参数的PowerShell脚本,例如“20160428”。

我需要将其格式化为yyMMdd(即结果为“160428”)。我可以删除“20”,但我想说得对。为此,我做了很多尝试,例如:

#$COBDATE= '{0:yyMMdd}' -f $COBDATE
#$COBDATE = ([datetime]::ParseExact($COBDATE, "yyMMdd", [System.Globalization.CultureInfo]::InvariantCulture )).DayOfWeek

最后一个:

$COBDATE = ("{0:yyMMdd}" -f [datetime]::parse($COBDATE))

以下情况有效,但是一旦我将“Get-Date”替换为我的日期“20160428”,它就会打印出yyMMdd字符串。

$b = (Get-Date).AddDays(-1).ToString("yyMMdd")

所以如果我试试这个:

$input = "20160428"
$format = "yyMMdd"
$input_toDate_up = [DateTime]::ParseExact($input, $format, $null).ToString($format)
$input_toDate_up

它只是说字符串不是有效的日期时间,这似乎是根本原因。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

$Input = "20160428"
Get-Date -Year $Input.Substring(0,4) -Month $Input.Substring(4,2) -Day $Input.Substring(6,2) -Format "yyMMdd"

答案 1 :(得分:1)

我认为一个$input是一个保留变量,所以你不应该使用它,因为没有像你期望的那样真正起作用。见about_Automatic_Variables

我之前使用过这种抽取的子字符串过程,使用了各种抽象日期格式。

$dateinput = "20160428"
$dateformat = "yyMMdd"

Get-Date($dateinput.Substring(4,2) + "/" + $dateinput.Substring(2,2) + "/" + $dateinput.substring(0,4)) -Format $dateformat

我确信有一个较短的正则表达式方法,但这还不是我的帽子。