powershell 将UFormat应用于System.DateTime变量

qyuhtwio  于 2022-11-10  发布在  Shell
关注(0)|答案(3)|浏览(150)

我正在尝试对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错误。有没有人能解释一下如何使这种格式化起作用?
谢谢,

8fsztsew

8fsztsew1#

与使用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)
i5desfxk

i5desfxk2#

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

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

uyto3xhc3#

-UFormat开关属于Get-Date命令集。因此,您将使用以下语法:
Get-Date($startDate)-例如UFormat“%Y%m%d”。
如果我解释的是您在日期格式字符串中“真正”想要的内容,那么您的小时记号的大小写不正确。
“%Y%m%d-%h%M%S”应为
Get-Date($startDate)-UFormat%Y%m%d-%H%M%S
返回电话:20210102-200000
这些代币--至少我是从那里买的--来自TCL。
查看完整列表,请查看TCL时钟手册页面。
我通常使用-UFormat开关-我知道TCL标记,不必担心转义Microsoft日期字符串标记中使用的字母。
Get-Date($startDate)-格式“Hello-yyyyMMdd-HHmmss-World”
返回:20ello-20210102-200000-Worl2,因为H和d是标记,需要进行转义\H\d
鉴于
Get-Date($startDate)-UFormat“Hello-%Y%m%d-%H%M%S-World”
退货:HELLO-20210102-200000-世界

相关问题