PowerShell конвертировать строковую дату в UTC формат

Предположим есть уже готовые строки формата 4/6/2021 7:23:14 AM которые необходимо конвертировать в нужный формат

Решение

Возьмем строку указанную выше за исходную:

$strDate = "4/6/2021 7:23:14 AM"

Далее необходимо эту строку конвертировать в объект datetime:

$dt = [System.DateTime]$strDate

Далее уже с этим объектом можно работать фактически как угодно, для примера создадим несколько различных форматов дат

$format1 = "MM/dd/yyyy"
$format2 = "dd.MM.yyyy"
$format3 = "dd-MM-yyyy"
$format4 = "yyyy-MM-dd HH:mm:ss tt"
$utc = "yyyy-MM-ddTHH:mm:ss.fffK"

Где datetime легко форматируется в нужный формат:

$dt.ToString($format1)
$dt.ToString($format2)
$dt.ToString($format3)
$dt.ToString($format4)
$dt.ToString($utc)

Вывод:

04/06/2021
06.04.2021
06-04-2021
2021-04-06 07:23:14 AM
2021-04-06T07:23:14.000

Или можно сделать так:

$dt.toUniversalTime().ToString('yyyy-MM-ddTHH:mm:ss.fffK')

Вывод:

2021-04-06T04:23:14.000Z

Метод с добавлением смещения по тайм-зоне

$strDate="4/6/2021 7:18:32 AM"
$culture=[System.Globalization.CultureInfo]::CreateSpecificCulture("en-US")
$datetimestyles=[System.Globalization.DateTimeStyles]::AssumeLocal
$date=[datetime]::ParseExact($strDate,"M/d/yyyy h:m:s tt",$culture,$datetimestyles)
write-host $date.ToString("o")

Ссылка на решение - Telegram: Contact @sysadm_in

Еще

Благодарности

  • @Anatoly