Кастинг будет работать только в формате США или ISO-8601 в PowerShell. Подумайте о том, чтобы отличить строку до DateTime
как своего рода DateTime
буквально. Таким образом, в сценариях, которые могут сломаться (например, это обычное явление с пакетными файлами), не может быть никаких языковых зависимостей.
Как правило, если вы работаете со строками в определенной культуре, вам необходимо использовать [DateTime]::Parse
и его аналоги (аналогично другим типам данных, таким как числа).
В этом случае, однако, похоже, en-nz
неправильная культура для разбора это с так или иначе:
PS Home:\> [DateTime]::Parse('13/10/2014 02:13:02 p.m.', [cultureinfo]::GetCultureInfo('en-nz'))
Exception calling "Parse" with "2" argument(s): "The string was not recognized as a valid DateTime. There is an
unknown word starting at index 20."
At line:1 char:1
+ [DateTime]::Parse('13/10/2014 02:13:02 p.m.', [cultureinfo]::GetCultu ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : FormatException
Проблема заключается в p.m.
, которые лишь очень немногие культуры имеют:
PS Home:\> [cultureinfo]::GetCultures('AllCultures')|?{[DateTime]::Now.ToString($_) -match 'p\.m\.'}
LCID Name DisplayName
---- ---- -----------
112 ig Igbo
1136 ig-NG Igbo (Nigeria)
4096 luy Luluhia
4096 luy-KE Luluhia (Kenya)
129 mi Maori
1153 mi-NZ Maori (New Zealand)
134 quc K'iche'
31878 quc-Latn K'iche'
1158 quc-Latn-GT K'iche' (Guatemala)
107 quz Quechua
1131 quz-BO Quechua (Bolivia)
3179 quz-PE Quechua (Peru)
mi-NZ
выглядит неплохо:
PS Home:\> [DateTime]::Parse('13/10/2014 02:13:02 p.m.', [cultureinfo]::GetCultureInfo('mi-nz'))
Montag, 13. Oktober 2014 14:13:02
В каких томах GE? C# или Powershell? – Blorgbeard
Я использую powershell. –