String 从给定字符串转换日期

String 从给定字符串转换日期,string,powershell,datetime,String,Powershell,Datetime,我需要识别这个包含日期的字符串 2015110171937.050162+060 它是对象的CreationDate属性getwmiobject-Class win32\u进程。我需要将其用作New TimeSpancmdlet的输入。因此,它应该是有效的[DateTime]对象,但我不知道如何转换它 小数点前的部分是“2015110171937” 或2015-11-1017:19:37 这是你的日期/时间戳。忽略其余部分。PowerShell使用两种方法扩展每个WMI对象ConvertFrom

我需要识别这个包含日期的字符串

2015110171937.050162+060


它是对象的
CreationDate
属性
getwmiobject-Class win32\u进程
。我需要将其用作
New TimeSpan
cmdlet的输入。因此,它应该是有效的
[DateTime]
对象,但我不知道如何转换它

小数点前的部分是“2015110171937”

或2015-11-1017:19:37


这是你的日期/时间戳。忽略其余部分。

PowerShell使用两种方法扩展每个WMI对象
ConvertFromDateTime
ConvertToDateTime
,这两种方法允许您在WMI字符串和.NET
[DateTime]
表示形式之间转换日期和时间。此方法实际上只是引用了
[System.Management.ManagementDateTimeConverter]
静态方法
ToDmtfDateTime
ToDateTime

字符串“2015110171937.050162+060”是WMI日期时间格式,相当于以下格式的数据类型(yyyymmddHHMMSS.mmmmmm suuu),其中

  • mmmmmm秒内的六位数微秒(000000到 999999). 您的实现不必支持评估 使用此字段。但是,此字段必须始终显示给 保留字符串的固定长度特性

  • s加号(+)或减号(-)表示正或负 与协调世界时(UTC)的偏移量

  • 三位数偏移量 指示发起时区的分钟数 偏离UTC。对于WMI,鼓励但不要求 将时间转换为GMT(UTC偏移量为零)

UUU具有重要意义,因为它确实会改变本地时区。例如,您可以通过更改本地时区并运行

(Get-WmiObject Win32_OperatingSystem).InstallDate
您可以使用PeterSerAl提及或通过此快捷方式进行一次隐藏

([WMI]'').ConvertToDateTime((Get-WmiObject Win32_OperatingSystem).InstallDate)

但请注意,ConvertToDateTime()和[System.Management.ManagementDateTimeConverter]存在一个错误::在Powershell中,ToDateTime()不尊重本地时区,并且会给您提供错误的日期。分析,但由于篇幅很短,您必须重新启动Powershell shell或ISE才能使其工作

尝试强制转换[System.DateTime]
Get-WmiObject-Class win32|process | ForEach对象{$\u0.ConvertToDateTime($\u0.CreationDate)}
“我需要将其用作New-TimeSpan cmdlet的输入”您似乎不符合OP的要求:)工作起来很有魅力。谢谢:-)。