我有一个脚本,它获取文件的创建日期,并将其注入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日期的输出是个位数,我需要两位数。有什么想法吗?
发布于 2019-04-03 17:42:14
假设您实际上不需要日期时间的每一部分作为一个单独的变量,下面的操作应该是有效的:
$filename="C:\Users\Public\file.xml"
(Get-ChildItem $filename).creationtime.toString('yyyy-MM-ddTHH:mm:ss')+':00z'我不知道为什么toString()方法以前不适用于您,除非您没有引用括号中的内容。该方法并不总是需要输入参数,但使用您正在尝试的方法,它需要将一个字符串传递给它。
发布于 2019-04-03 17:45:40
你正在用艰难的方式来构建这一切。将日期和时间格式化为字符串的详细说明如下:https://ss64.com/ps/syntax-dateformats.html
一个更简单的方法是使用内置的[datetime]方法ToString(),因为现在要6次获取文件信息,而且速度更快。
(Get-Item $filename).CreationTimeUtc.ToString("yyyy-MM-ddTHH:mm:ss.00Z")请注意,我使用的是CreationTimeUtc属性,而不是CreationTime,因为您正在创建的字符串末尾的"Z“表示UTC中的时间( "Z”表示祖鲁时间,如维基百科中所解释)。
发布于 2019-04-03 18:53:55
除了分隔日期和时间部分以及子秒组件的T之外,您的格式与日期/时间格式相同。
PS> (Get-Item /).CreationTimeUtc.ToString('u') -replace ' ', 'T'
2018-11-30T10:47:40Z如果您需要一个显式的零值子秒组件,请附加-replace 'Z$', '.00Z' -注意使用.而不是:作为分隔符,因为通常使用.。
https://stackoverflow.com/questions/55500777
复制相似问题