2016-04-20 10 views
0

Powershell Get-WMIObject gibt diese Datetime-Felder als Zeichenfolgen wie: 20130420151740.000000+120Umwandlung 20130420151740,000000 + 120 bis Datetime

Typ in einer Powershell den folgenden Befehl ein:

Get-WMIObject -Class Win32_OperatingSystem | select -Property InstallDate | Get-Member 

Sie erhalten ein Ergebnis wie folgt aus:

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 

In einem C# -Programm muss ich diese Art von Zeichenfolgen konvertieren. Welche Art von Format ist das? Das sieht wie ein Double plus eine UTC-Verschiebung in Minuten aus. Normalerweise wird dies als 2013-04-20 15:17:40 +2:00 angezeigt.

Wie kann ich es in C# in einen C# -Typ DateTime verwandeln? Dinge wie

string stringdate = "20160331115110.000000+120"; 
var date = Convert.ToDateTime(stringdate); 

oder

string stringdate = "20160331115110.000000+120"; 
var date = DateTime.Parse(stringdate); 

funktionieren nicht. Sie werfen einen System.FormatException exception Sprichwort:

Nachricht = Zeichenfolge wurde nicht als gültige DateTime erkannt.

+0

@CodeCaster schlägt mich zu ihm ... – phuzi

+0

@Priya nicht verwenden 'Inline code' zufälligen Begriffe zu markieren. – CodeCaster

Antwort

0

Es gibt ManagementDateTimeConverter.ToDateTime genau für dieses Format. Sie können es so nennen:

using System.Management; 
[...] 
string stringdate = "20160331115110.000000+120"; 
DateTime dt = ManagementDateTimeConverter.ToDateTime(stringdate); 
+1

Ich habe 'ManagementDateTimeConverter' nicht gefunden und kenne es nicht, aber es ist genau das, was ich brauche und gesucht habe. – ThommyB

+0

Froh, ich könnte dir helfen! – rinukkusu

Verwandte Themen