如何使用PowerShell将未来日期转换为yyyy-mm-ddT00:00:00Z格式
PowerShell 无替换实现日期转yyyy-MM-ddTHH:mm:ssZ格式方案
不需要使用正则或replace()方法,直接通过自定义日期格式字符串配合UTC时间转换即可实现目标效果。
你之前使用的Get-Date -Format u存在固定格式限制:
u是.NET内置的通用可排序格式说明符,固定输出模式为yyyy-MM-dd HH:mm:ssZ,日期和时间之间用空格分隔,和目标格式仅差分隔符,无需做字符串替换,直接传入自定义格式串即可满足要求。
转换指定未来日期(以2022年7月1日午夜00:00 UTC为例)
直接构造UTC类型的DateTime对象,传入自定义格式串输出:
[DateTime]::new(2022, 7, 1, 0, 0, 0, [DateTimeKind]::Utc).ToString('yyyy-MM-ddTHH:mm:ssZ')
执行后直接输出符合要求的结果:2022-07-01T00:00:00Z
也可以通过原生Get-Date cmdlet实现:
Get-Date -Date ([DateTime]::new(2022,7,1,0,0,0,[DateTimeKind]::Utc)) -Format 'yyyy-MM-ddTHH:mm:ssZ'
转换任意已存储的DateTime对象
如果需要转换当前时间、或者变量中存储的其他时间,必须先将时间转换为UTC时区再格式化,避免时区偏差:
# 示例:转换当前时间为目标格式 $currentTime = Get-Date $currentTime.ToUniversalTime().ToString('yyyy-MM-ddTHH:mm:ssZ')
关键注意事项:禁止直接对本地时区的DateTime对象使用
yyyy-MM-ddTHH:mm:ssZ格式串格式化。格式串末尾的Z代表UTC零偏移,直接格式化本地时间会输出错误的时间值,和真实UTC时间相差本地时区的偏移量。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

