2012-04-05 18 views
21

Ich kann nicht verstehen, wie die Formatierung einer Datetime-Variablen in einer Zeichenfolge in PowerShell funktioniert.Formatieren von PowerShell Get-Date in Zeichenfolge

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

gibt mir das Datum US-Format, während ich ISO 8601 wollen.

konnte ich

$(Get-Date -Format u) 

verwenden, aber ich will $ endTime verwenden die Berechnung der Zeitspanne richtig zu machen.

Ich habe versucht, alle Permutationen von $, (,), endTime, -Format, u, .ToString (...) und .ToShortDate(), aber derjenige, der funktioniert.

Antwort

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

oder

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

Der Unterausdruck ($(...)) können beliebige Ausdrücke umfassen nennt.

MSDN Dokumente beide standard and custom DateTime format strings.

4

Statt string interpolation verwenden könnten Sie einfach die DateTime formatieren Sie die ToString("u") Methode und concatenate mit, dass mit dem Rest der Zeichenfolge:

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

Gültige Lösung. Fehlt jedoch "String in String". Es gibt keinen/wirklichen/Grund für mich, statt String-Inside-String zu verketten. – LosManos

+0

Absolut korrekt. @ Richards Antwort ist die beste. –

25

Sie die -f Operator

$a = "{0:D}" -f (get-date) 
$a = "{0:dddd}" -f (get-date) 
können
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

Die MSDN-Seiten für [Standard] (http://msdn.microsoft.com/en-us/library/az4se3k1.aspx) und [custom] (http://msdn.microsoft.com/en-us/library/ 8kb3ddd4.aspx) Formatzeichenfolgen haben viele Beispiele, sogar in verschiedenen Sprachen :). +1 für Formatstrings, die meiner Meinung nach hier vorzuziehen sind. – Joey

+0

$ a wird zu einer Zeichenfolge, n'est-ce pas? Ich brauchte ein echtes String-Objekt. Der Weg, zuerst die Formatierung und dann den Wert festzulegen, war für mich neu. Vielen Dank. – LosManos

+0

Danke @Joey, ich konnte einfach nicht meine Finger auf diese Seiten legen, also kopiere ich einen meiner Dokumente. – JPBlanc