我有一个日期时间作为字符串,我试图将它放入DateTime对象。我使用过Get-Culture
而我是en-nz这就是我想要的。
字符串是:
13/10/2014 02:13:02 p.m.
我尝试了一些方法,例如将它转换为带有[datetime]
的dateTime对象,但这似乎不起作用。
我怎么能在powershell中做到这一点?
编辑:我正在使用PowerShell,因此.NET函数也可以正常工作。
感谢。
答案 0 :(得分:1)
Casting仅适用于PowerShell中的US格式或ISO-8601。可以考虑将字符串转换为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