Powershell: amerikanischen Zeitstempel in deutschen umwandeln
Hallo,
ich kann zwar Batch, aber kein Powershell. Nun habe ich das Problem, das ein Powershell-Script aus einer XML-Logdatei einen Datumsstempel ausliest und zu diesem Stempel eine Anzahl Sekunden hinzuaddieren soll.
$finjob ist immer leer. Ich vermute, daß liegt daran, das Datumsstempel in $job.actualstarttime im amerikanischen Format, also z.B. "6/17/2017 4:30:05 PM", vorliegt und das der Befehl aber das deutsche Format sehen möchte.
Wäre der Zeitstempel ohne Uhrzeit, würde folgender Code (dank Tante Google) funktionieren:
Wie muss nun die Uhrzeit da hinzu geflickt werden?
Danke
Gruß
Apophis
ich kann zwar Batch, aber kein Powershell. Nun habe ich das Problem, das ein Powershell-Script aus einer XML-Logdatei einen Datumsstempel ausliest und zu diesem Stempel eine Anzahl Sekunden hinzuaddieren soll.
$finjob = ($job.actualstarttime -as [datetime]).addseconds($job.elapsedtimeseconds) #Adding total time to start time so we know when it ended
$finjob ist immer leer. Ich vermute, daß liegt daran, das Datumsstempel in $job.actualstarttime im amerikanischen Format, also z.B. "6/17/2017 4:30:05 PM", vorliegt und das der Befehl aber das deutsche Format sehen möchte.
Wäre der Zeitstempel ohne Uhrzeit, würde folgender Code (dank Tante Google) funktionieren:
$cultureUS = New-Object System.Globalization.CultureInfo("en-US")
$strtime = $job.actualstarttime
$strtime=[datetime]::ParseExact($strtime,"M/dd/yyyy",$cultureUS)
$finjob = ($strtime -as [datetime]).addseconds($job.elapsedtimeseconds)
Wie muss nun die Uhrzeit da hinzu geflickt werden?
Danke
Gruß
Apophis
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 341086
Url: https://administrator.de/contentid/341086
Ausgedruckt am: 24.11.2024 um 15:11 Uhr
6 Kommentare
Neuester Kommentar
Vermutungen sind schön, meistens aber nicht zielführend.
Ich würde ja erstmal einzeln schauen, was da wirklich rauskommt.
Also:
Was ist das Ergebnis von
Was ist das Ergebnis von
Was ist das Ergebnis von
Danach kann man sich fundiert Gedanken darüber machen wo es schiefgeht.
Ich würde ja erstmal einzeln schauen, was da wirklich rauskommt.
Also:
Was ist das Ergebnis von
$job.actualstarttime
($job.actualstarttime -as [datetime])
$job.elapsedtimeseconds
Danach kann man sich fundiert Gedanken darüber machen wo es schiefgeht.
Die Datumsformate sind echt ein ...
Nach ein bischen experimentieren sollte folgendes gehen (wenn das Format gleich bleibt):
[datetime] alleine nimmt irgendeine Datumsformatdefinition, mit der .Net Funktion parseexact kann man den Formatstring mitangeben, dann klappt auch die Konvertierung.
Nach ein bischen experimentieren sollte folgendes gehen (wenn das Format gleich bleibt):
$en = New-Object system.globalization.cultureinfo(“en-US”)
$finjob = ([datetime]::parseexact($job.actualstarttime,"M/d/yyyy h:mm:ss tt",$en)).addseconds($job.elapsedtimeseconds)