我有一个脚本,该脚本采用文件的创建日期并将其注入xml标记中。一切正常,但日期格式显示为2019-4-3,我需要格式为2019-04-03。
我尝试过'tostring(MM)',但对我而言无效。有人有想法么?这是我认为问题所在的代码段。如果有人想看的话,我可以发布整个脚本。
$filename="C:\Users\Public\file.xml"
$filename2="C:\Users\Public\file2.xml"
$month = (Get-ChildItem $filename).CreationTime.Month
$day = (Get-ChildItem $filename).CreationTime.Day
$year = (Get-ChildItem $filename).CreationTime.Year
$hour = (Get-ChildItem $filename).CreationTime.Hour
$min = (Get-ChildItem $filename).CreationTime.Minute
$sec= (Get-ChildItem $filename).CreationTime.Second
$output=[string]$year+"-"+[string]$month+"-"+[string]$day+"T"+[string]$hour+":"+[string]$min+":"+[string]$sec+":00z"
Write-Host $output
日期的输出是个位数,我需要它们是两位数。有什么想法吗?
答案 0 :(得分:4)
假设您实际上不需要将日期时间的每个部分作为一个单独的变量,那么以下内容应该可以工作:
$filename="C:\Users\Public\file.xml"
(Get-ChildItem $filename).creationtime.toString('yyyy-MM-ddTHH:mm:ss')+':00z'
我不知道为什么toString()
方法以前对您不起作用,除非您没有在括号内引用内容。该方法并不总是需要输入参数,但是您尝试使用的方法需要将字符串传递给它。
答案 1 :(得分:1)
您正在艰难地构建这种方式。将日期和时间格式化为字符串的方式在此处进行了详细说明:https://ss64.com/ps/syntax-dateformats.html
一种更简单的方法,并且因为现在您现在已经六次获取文件信息,所以速度更快,那就是使用内置的[datetime]
方法ToString()
。
(Get-Item $filename).CreationTimeUtc.ToString("yyyy-MM-ddTHH:mm:ss.00Z")
请注意,我使用了CreationTimeUtc
属性而不是CreationTime
,因为要创建的字符串末尾的“ Z”表示这是UTC时间(“ Z”表示祖鲁时间,如Wikipedia中所述)。
答案 2 :(得分:0)
要互补 TheMadTechnician's helpful answer:
除了T
分隔日期和时间部分以及不足一秒的部分外,您的格式与standard u
date/time format相同:
PS> (Get-Item /).CreationTimeUtc.ToString('u') -replace ' ', 'T'
2018-11-30T10:47:40Z
如果您需要显式的零值亚秒级分量,请附加-replace 'Z$', '.00Z'
-注意使用.
而不是:
作为分隔符,因为.
通常使用。