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

问题描述 投票:1回答:2

我运行一个传递参数的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))

以下工作,但一旦我用我的日期“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

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

我怎样才能解决这个问题?

date powershell format
2个回答
3
投票
$Input = "20160428"
Get-Date -Year $Input.Substring(0,4) -Month $Input.Substring(4,2) -Day $Input.Substring(6,2) -Format "yyMMdd"

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

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

© www.soinside.com 2019 - 2024. All rights reserved.