Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Formatting PowerShell Get-Date inside string

I can't get my head around how formatting a datetime variable inside a string works in PowerShell.

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

gives me the US date format while I want ISO 8601.

I could use

$(Get-Date -Format u) 

but I want to use $endTime to make the calculation of the timespan correct.

I have tried all permutations of $, (, ), endTime, -format, u, .ToString(...) and .ToShortDate(), but the one that works.

like image 728
LosManos Avatar asked Apr 05 '12 08:04

LosManos


People also ask

How do I parse a date in a string in PowerShell?

Use ParseExact to Convert String to DateTime in PowerShell The ParseExact method helps convert the specified date and time string to the DateTime data type. We have a variable $date , which contains the date in string format. You can check the data type using the GetType() method.

How do I convert a date in PowerShell?

$currdateobj = Get-Date $STARTDATE = "12-05-2017" // specific non-default date format [DateTime]$startdateobj = [DateTime]::ParseExact($STARTDATE,"dd-MM-yyyy",[System. Globalization.

How do I echo the current date in PowerShell?

Utilize the “AddDays()” function and specify “-1” as a parameter for this function. Calling the “AddDays()” function with these specified settings will let you display Yesterday's date in your PowerShell.

How do I get the current date and time in a PowerShell script?

Get Date and Time in PowerShell To find this information, pipe the Format-List cmdlet output below. You can also use the Get-Member command to find all the object properties by running the Get-Date | Get-Member command. If we check the type of object Get-Date | Get-Member returns, you'll notice a System.


2 Answers

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

or

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

The sub-expression ($(...)) can include arbitrary expressions calls.

Microsoft Documents both standard and custom DateTime format strings.

like image 110
Richard Avatar answered Sep 23 '22 19:09

Richard


You can use the -f operator

$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 
like image 39
JPBlanc Avatar answered Sep 25 '22 19:09

JPBlanc