我正在将代表日期的字符串(即20180625)传递到我的Powershell脚本。
然后我使用字符串参数(称为$ currentDate)并将其格式化如下:
$date = [datetime]::ParseExact($currentDate,"yyyyMMdd",$null)
但是,当我写出$ date变量时,它显示为6/29/2018 12:00:00 AM。
我这样做是因为我需要获取脚本的一年中的某天:
$dayofyear = ($date).dayofyear
哪个工作。我只是希望$ date是yyyyMMdd格式。只是好奇为什么会这样。
答案 0 :(得分:3)
ParseExact的format参数告诉解析器您输入日期的格式。返回的对象是DateTime对象,而不是字符串。要获取所需格式的字符串,请使用.ToString()方法,然后给出您希望该字符串使用的格式。
例如:
$currentDate = '20180629'
$date = [datetime]::ParseExact($currentDate,"yyyyMMdd",$null)
$dayOfYear = $date.DayOfYear
$date.ToString('yyyyMMdd')
答案 1 :(得分:0)
$date
是类型[datetime]
的对象,其中包含ticks
中时间的精确度量。例如,1天的时间跨度为864000000000滴答。因此,不可能在较小的字段中使用$null
值(864个滴答声只有几毫秒)。 $date
使用默认格式打印到控制台,该格式可以更改。但是,由于向下-Milliseconds
的每个字段都填充为0,因此当默认格式确实包含诸如-hours
之类的字段时,它们将显示为最小值(在这种情况下,恰好是凌晨12点)。 / p>