Преобразование 20130420151740.000000+120 в DateTime
PowerShell Get-WMIObject возвращает поля DateTime в виде строк: 20130420151740.000000+120
Введите в PowerShell следующую команду:
Get-WMIObject -Class Win32_OperatingSystem | select -Property InstallDate | Get-Member
Вы получите такой результат:
TypeName: Selected.System.Management.ManagementObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
InstallDate NoteProperty string InstallDate=20160331115110.000000+120
В программе на C# мне нужно конвертировать такие строки. Что это за формат?? Это выглядит как Double
плюс смещение UTC в минутах. Обычно это отображается как 2013-04-20 15:17:40 +2:00
,
Как я могу преобразовать его в C# в тип C# DateTime
? Вещи как
string stringdate = "20160331115110.000000+120";
var date = Convert.ToDateTime(stringdate);
или же
string stringdate = "20160331115110.000000+120";
var date = DateTime.Parse(stringdate);
не работает Они бросают System.FormatException exception
говоря:
Сообщение = Строка не была распознана как допустимый DateTime.
1 ответ
Решение
Для этого формата есть ManagementDateTimeConverter.ToDateTime. Вы можете назвать это так:
using System.Management;
[...]
string stringdate = "20160331115110.000000+120";
DateTime dt = ManagementDateTimeConverter.ToDateTime(stringdate);