繁体   English   中英

将 UFormat 应用于 System.DateTime 变量

[英]Apply UFormat to System.DateTime variable

我正在尝试将特定格式应用于 Powershell 上的 DateTime 变量,但我发现这是不可能的。

这很好用:

>> Get-Time -UFormat "%Y%m%d-%h%M%S"
20210412-135938

但是如果我尝试将它分配给一个变量然后进行格式化,我会遇到一个错误,例如

 $startDate=Get-Date -Year 2021 -Month 01 -Day 01 -Hour 11 -Minute 00 -Second 00
 $startDate=$startDate.addHours(10)
 $startDate=$startDate.addHours(23)
 ($startDate) -UFormat "%Y%m%d-%h%M%S"

然后我收到Token Uformat unexpected错误。 有人可以阐明如何使这种格式起作用吗?

谢谢,

您可以将现有的[datetime]值传递给Get-Date-Date参数:

Get-Date -Date $startDate -UFormat "%Y%m%d-%h%M%S"

有更多的格式化日期的方法比使用 UFormat 更“PowerShelly”:

  1. 使用.Net ToString()方法:
(Get-Date).AddHours(10).ToString("yyyyMMdd-HHmmss")
  1. 使用Get-Date的 -Format 参数:
$startDate = (Get-Date).AddHours(10)
Get-Date -Date $startDate -Format "yyyyMMdd-HHmmss"
  1. 或者使用-f格式运算符:
'{0:yyyyMMdd-HHmmss}' -f (Get-Date).AddHours(10)

-UFormat 开关属于 Get-Date commandlet。 所以你会使用这个语法:

Get-Date ($startDate) -UFormat "%Y%m%d" 例如。

而且,如果我在您的日期格式字符串中解释您“真正”想要的内容,那么您在小时标记上的大小写不正确。

"%Y%m%d-%h%M%S" 应该是

获取日期($startDate)-UFormat %Y%m%d-%H%M%S

哪个将返回:20210102-200000

这些代币——至少在我得到它们的地方——来自 TCL。

Goggle tcl 时钟手册页以获取完整列表。

我通常使用 -UFormat 开关 - 我知道 TCL 令牌,不必担心 Microsoft 日期字符串令牌中使用的 escaping 个字母。

获取日期($startDate)-格式“Hello-yyyyMMdd-HHmmss-World”

返回:20ello-20210102-200000-Worl2 因为 H 和 d 是标记 - 需要转义 \H \d

然而

获取日期($startDate)-UFormat "Hello-%Y%m%d-%H%M%S-World"

返回:Hello-20210102-200000-World

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM