Как уже упоминалось в комментарии, вы можете изменить свой код на [datetime]::parseexact('2018-05-07T15:19:17.839+03:00', 'yyyy-MM-ddTHH:mm:ss.fffzzz',$null)
, и это будет работать для вас, если вы не заинтересованы в CultureInfo
.
Но, как я вижу из вашего кода, вы предоставляете 3 аргумента для своей функции ParseExact
, что заставляет меня задуматься, действительно ли вы пытаетесь изменить CultureInfo
. Если вы хотите изменить это, вы можете сделать что-то вроде этого -
([datetime]::ParseExact($date,"dd/MM/yyyy",[Globalization.CultureInfo]::CreateSpecificCulture('en-GB'))
OR
([datetime]::ParseExact($date,"dd/MM/yyyy",[Globalization.CultureInfo]::CreateSpecificCulture('de-DE'))
и т. Д. В зависимости от ваших требований.
Дополнительная информация -
Согласно статье MSDN ,
The
DateTime.ParseExact (String, String [], IFormatProvider, DateTimeStyles)
Метод анализирует строковое представление даты, которая соответствует любой
шаблонов, назначенных параметру форматов. Если строка
не соответствует ни одному из этих шаблонов ни одному из вариантов
определенный параметром styles, метод генерирует исключение FormatException.
Помимо сравнения с несколькими шаблонами форматирования, а не
один шаблон форматирования, эта перегрузка ведет себя идентично
DateTime.ParseExact (String, String, IFormatProvider, DateTimeStyles)
способ.
Параметр style
представляет собой побитовую комбинацию значений перечисления, которая указывает допустимый формат s (входная дата). Типичное значение, которое нужно указать: Нет .
Подробнее см. Культура форматирования Get-Date .