首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使creationtime.month格式为两位数而不是单数?

如何使creationtime.month格式为两位数而不是单数?
EN

Stack Overflow用户
提问于 2019-04-03 17:16:54
回答 3查看 1.2K关注 0票数 1

我有一个脚本,它获取文件的创建日期,并将其注入xml标记中。所有的工作,但格式化的日期显示2019-4-3和我需要的格式是2019-04-03。

我试过“tostring(MM)”,但这对我没有用。有人有什么想法吗?下面是我认为问题所在的代码片段。如果有人想看的话,我可以把整个剧本都贴出来。

代码语言:javascript
复制
$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

日期的输出是个位数,我需要两位数。有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-04-03 17:42:14

假设您实际上不需要日期时间的每一部分作为一个单独的变量,下面的操作应该是有效的:

代码语言:javascript
复制
$filename="C:\Users\Public\file.xml"
(Get-ChildItem $filename).creationtime.toString('yyyy-MM-ddTHH:mm:ss')+':00z'

我不知道为什么toString()方法以前不适用于您,除非您没有引用括号中的内容。该方法并不总是需要输入参数,但使用您正在尝试的方法,它需要将一个字符串传递给它。

票数 4
EN

Stack Overflow用户

发布于 2019-04-03 17:45:40

你正在用艰难的方式来构建这一切。将日期和时间格式化为字符串的详细说明如下:https://ss64.com/ps/syntax-dateformats.html

一个更简单的方法是使用内置的[datetime]方法ToString(),因为现在要6次获取文件信息,而且速度更快。

代码语言:javascript
复制
(Get-Item $filename).CreationTimeUtc.ToString("yyyy-MM-ddTHH:mm:ss.00Z")

请注意,我使用的是CreationTimeUtc属性,而不是CreationTime,因为您正在创建的字符串末尾的"Z“表示UTC中的时间( "Z”表示祖鲁时间,如维基百科中所解释)。

票数 2
EN

Stack Overflow用户

发布于 2019-04-03 18:53:55

补充疯狂技术家的有益回答

除了分隔日期和时间部分以及子秒组件的T之外,您的格式与日期/时间格式相同。

代码语言:javascript
复制
PS> (Get-Item /).CreationTimeUtc.ToString('u') -replace ' ', 'T'
2018-11-30T10:47:40Z

如果您需要一个显式的零值子秒组件,请附加-replace 'Z$', '.00Z' -注意使用.而不是:作为分隔符,因为通常使用.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55500777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档