2012-04-05 26 views
21

文字列内のdatetime変数の書式設定がPowerShellでどのように機能するか、頭を悩めることはできません。私はISO 8601が欲しいながら文字列内のPowerShell Get-Dateの書式設定

$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)." 

は私に、米国の日付形式を提供します。

私は

$(Get-Date -Format u) 

を使用することができますが、私はタイムスパンの計算が正しい作るために$ endTimeはを使用します。

$、(、)、endTime、-format、u、.ToString(...)および.ToShortDate()のすべての順列を試しましたが、動作します。

答えて

32
"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

4

代わりのstring interpolationを使用してあなたは、単に文字列の残りの部分とすることをToString("u")方法とCONCATENATEを使用してDateTimeをフォーマットすることができます:

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

有効なソリューション。しかし、文字列の中に文字列が欠けている。 string-inside-stringの代わりに連結しない/ real/reasonはありません。 – LosManos

+0

絶対に正しい。 @リチャードの答えは最高です。 –

25

あなたは

$a = "{0:D}" -f (get-date) 
$a = "{0:dddd}" -f (get-date) 
-f演算子を使用することができます
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 
+0

[標準](http://msdn.microsoft.com/en-us/library/az4se3k1.aspx)と[カスタム](http://msdn.microsoft.com/en-us/library/)のMSDNページ8kb3ddd4.aspx)形式の文字列には、たとえ異なる言語であっても、たくさんの例があります:)。私の意見ではここでpreferrableであるフォーマット文字列を提案するための+1。 – Joey

+0

$ aは文字列になりますが、n'est-ce pas?私は本当の文字列オブジェクトが必要でした。書式設定を最初に設定してから、その値が新しいものになりました。ありがとう。 – LosManos

+0

ありがとう@ジョーイ、私はこれらのページに私の指を置くことができなかったので、私は自分の文書の1つをコピーします。 – JPBlanc

関連する問題