将我的时间转换为DateTime

时间:2015-08-12 21:08:55

标签: powershell datetime

我有一个日期时间作为字符串,我试图将它放入DateTime对象。我使用过Get-Culture而我是en-nz这就是我想要的。

字符串是: 13/10/2014 02:13:02 p.m.

我尝试了一些方法,例如将它转换为带有[datetime]的dateTime对象,但这似乎不起作用。

我怎么能在powershell中做到这一点?

编辑:我正在使用PowerShell,因此.NET函数也可以正常工作。

感谢。

1 个答案:

答案 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