Change date format from "yyyymmdd" to "mm / dd / yyyy"

I tried many different ways and I can not figure out how to do it right.

Here is the code of what I have tried so far ...

[String]$dateValue = '20161212'
[String]$dateStamp = $dateValue -f (Get-Date)
[String]$dateStamp2 = ([datetime]::parseexact($dateValue,"yyyyMMdd",[System.Globalization.CultureInfo]::InvariantCulture)).Date
[String]$dateStamp3 = ([datetime]::FromFileTime($dateValue)).ToString('g')

Write-Host '$dateStamp =' $dateStamp
Write-Host '$dateStamp2 =' $dateStamp2
Write-Host '$dateStamp3 =' $dateStamp3

Current code output

$dateStamp = 20161212
$dateStamp2 = 12/12/2016 00:00:00
$dateStamp3 = 12/31/1600 5:00 PM

Required Code Output

$dateStamp = 12/12/2016

Any ideas?

+4
source share
2 answers

Once you have a datetime object, it is easy to convert it to whatever string format you need. You are so close with your second attempt. Adding ToStringallows you to specify a string format.

([datetime]::parseexact($dateValue,"yyyyMMdd",[System.Globalization.CultureInfo]::InvariantCulture)).ToString("dd/MM/yyyy")
+5
source

, , , [datetime]:

> '20161213' -replace '\d{2}(\d{2})(\d{2})(\d{2})', '$2/$3/$1'
12/13/16

, , , , .

, [datetime], , .

+1