PowerShell的 - 格式化日期YYMMDD格式
问题描述:
我运行一个PowerShell脚本传递参数,例如“20160428”PowerShell的 - 格式化日期YYMMDD格式
我需要的是格式为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
它只是说该字符串不是有效的日期时间,这似乎是根本原因。
请帮忙吗?
答
$Input = "20160428"
Get-Date -Year $Input.Substring(0,4) -Month $Input.Substring(4,2) -Day $Input.Substring(6,2) -Format "yyMMdd"
答
你与你的例子描述格式yyyyMMdd
,不yyMMdd
答
我觉得对于一个$input
是保留变量,所以你不应该把它当作什么都不会真的在那里工作,你期望的那样。看到这里about_Automatic_Variables
我已经用不同的抽象日期格式这个绘制的子串过程。
$dateinput = "20160428"
$dateformat = "yyMMdd"
Get-Date($dateinput.Substring(4,2) + "/" + $dateinput.Substring(2,2) + "/" + $dateinput.substring(0,4)) -Format $dateformat
我敢肯定,有一个更短的正则表达式方法,但那不是我的帽子。
正如ssaviers提到的,您还应该使用$ Input之外的变量来避免冲突。 – APB
在我的情况下,我添加了将参数转换为字符串之前($ cobdate = [string] $ cobdate,但之后,它完美的工作,谢谢! – Tiago
什么类型之前铸造到一个字符串?如果$ cobdate已经是一个日期时间对象,你可以简单地执行Get-Date -Date $ cobdate -Format“yyMMdd” – APB