我需要识别包含Date
的字符串20151110171937.050162 + 060
对象CreationDate
的{{1}}属性。我需要将它用作Get-WmiObject -Class win32_process
cmdlet的输入。因此,它应该是有效的New-TimeSpan
对象,但我不知道如何转换它。
答案 0 :(得分:4)
PowerShell使用两种方法clock = '00:48:22'
clock.split(':').map(&:to_i).reduce(0) do |acc, segment|
acc * 60 + segment
end
和ConvertFromDateTime
扩展每个WMI对象,这允许您在WMI字符串和.NET ConvertToDateTime
表示之间转换日期和时间。这种方法实际上只是对[DateTime]
静态方法[System.Management.ManagementDateTimeConverter]
和ToDmtfDateTime
的引用。
答案 1 :(得分:0)
小数点前的部分是" 20151110171937"
或2015-11-10 17:19:37
您的日期/时间戳。忽略其余部分。
答案 2 :(得分:0)
字符串" 20151110171937.050162 + 060"是WMI日期时间格式,与CIM_DATETIME数据类型等效,格式如下(yyyymmddHHMMSS.mmmmmmsUUU)其中;
mmmmmm秒中的六位数微秒(000000到 999999)。您的实施不必支持评估 使用此字段。但是,必须始终存在此字段 保留字符串的固定长度性质。
s加号(+)或减号( - )表示正面或负面 偏离世界协调时间(UTC)。
UUU三位数偏移量 表示始发时区的分钟数 偏离UTC。对于WMI,鼓励但不要求 将时间转换为GMT(UTC偏移为零)。
UUU具有重要意义,因为它确实会改变您当地的时区。您可以通过更改本地时区并运行来测试,例如
(Get-WmiObject Win32_OperatingSystem).InstallDate
您可以使用PeterSerAl提及或通过此快捷方式隐藏一次性
([WMI]'').ConvertToDateTime((Get-WmiObject Win32_OperatingSystem).InstallDate)
但请注意,Powershell中的ConvertToDateTime()和[System.Management.ManagementDateTimeConverter] :: ToDateTime()存在错误,它不尊重本地时区,会给你错误的日期。分析here,但是这很短很长,你必须重新启动Powershell shell或ISE才能使其正常工作。