在字符串中格式化PowerShell Get-Date

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在字符串中格式化PowerShell Get-Date相关的知识,希望对你有一定的参考价值。

我无法理解在PowerShell中如何格式化字符串中的datetime变量。

$startTime = Get-Date
Write-Host "The script was started $startTime"

...Do stuff...

$endTime = Get-Date
Write-Host "Done at $endTime.  Time for the full run was: $( New-TimeSpan $startTime $endTime)."

给我美国日期格式,而我想要ISO 8601

我可以用

$(Get-Date -Format u)

但我想使用$ endTime来计算时间长度是否正确。

我已经尝试了$,(,),endTime,-format,u,.ToString(...)和.ToShortDate()的所有排列,但是有效的排列。

答案
"This is my string with date in specified format $($theDate.ToString('u'))"

要么

"This is my string with date in specified format $(Get-Date -format 'u')"

子表达式($(...))可以包含任意表达式调用。

MSDN文件都是standard and custom DateTime format strings

另一答案

您可以使用-f运算符

$a = "{0:D}" -f (get-date)
$a = "{0:dddd}" -f (get-date)

Spécificator    Type                                Example (with [datetime]::now)
d   Short date                                        26/09/2002
D   Long date                                       jeudi 26 septembre 2002
t   Short Hour                                      16:49
T   Long Hour                                       16:49:31
f   Date and hour                                   jeudi 26 septembre 2002 16:50
F   Long Date and hour                              jeudi 26 septembre 2002 16:50:51
g   Default Date                                    26/09/2002 16:52
G   Long default Date and hour                      26/09/2009 16:52:12
M   Month Symbol                                    26 septembre
r   Date string RFC1123                             Sat, 26 Sep 2009 16:54:50 GMT
s   Sortable string date                            2009-09-26T16:55:58
u   Sortable string date universal local hour       2009-09-26 16:56:49Z
U   Sortable string date universal GMT hour         samedi 26 septembre 2009 14:57:22 (oups)
Y   Year symbol                                     septembre 2002

Spécificator    Type                       Example      Output Example
dd              Jour                       {0:dd}       10
ddd             Name of the day            {0:ddd}      Jeu.
dddd            Complet name of the day    {0:dddd}     Jeudi
f, ff, …        Fractions of seconds       {0:fff}      932
gg, …           position                   {0:gg}       ap. J.-C.
hh              Hour two digits            {0:hh}       10
HH              Hour two digits (24 hours) {0:HH}       22
mm              Minuts 00-59               {0:mm}       38
MM              Month 01-12                {0:MM}       12
MMM             Month shortcut             {0:MMM}      Sep.
MMMM            complet name of the month  {0:MMMM}     Septembre
ss              Seconds 00-59              {0:ss}       46
tt              AM or PM                   {0:tt}       ““
yy              Years, 2 digits            {0:yy}       02
yyyy            Years                      {0:yyyy}     2002
zz              Time zone, 2 digits        {0:zz}       +02
zzz             Complete Time zone         {0:zzz}      +02:00
:               Separator                  {0:hh:mm:ss}     10:43:20
/               Separator                  {0:dd/MM/yyyy}   10/12/2002
另一答案

您可以使用string interpolation方法简单地格式化DateTime,并将其与字符串的其余部分连接起来,而不是使用ToString("u")

$startTime = Get-Date
Write-Host "The script was started " + $startTime.ToString("u") 

以上是关于在字符串中格式化PowerShell Get-Date的主要内容,如果未能解决你的问题,请参考以下文章

在字符串中格式化PowerShell Get-Date

PowerShell格式化输出字符串

在 Powershell 中将字符串转换为哈希表

如何将多个字符串参数传递给 PowerShell 脚本?

Powershell Get-Date 格式不正确

在 C# 中无法获取 PowerShell 命令的结果