Предположим есть уже готовые строки формата 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
Еще
- ISO 8601 - Wikipedia
- https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/get-date
- https://devblogs.microsoft.com/scripting/formatting-date-strings-with-powershell/
- https://www.utctime.net/
Благодарности
- @Anatoly