Powershell unterschiedliche DateTime-Ausgabe bei gleichem Command
Hi @ All
Ich bin gerade über ein Verhalten von PS gestolpert das ich mir nicht erklären kann. Falls jemand in den Tiefen der PS sattelfest ist, bitte ich mich aufzuklären:
Wo liegt das Problem?
Ich speichere ein DateTime in eine $env:Variable und eine $LocalVariable
gebe ich beide wieder aus bekomme ich das:
Ich führe das auf die Culture von PS und der OS-GUI zurück, obwohl ich es ad hoc nicht beweisen kann. Wird aber nochmal etwas komischer.
Gebe ich beides innerhalb eines String aus, kommt das raus:
Ich bekomme also 3 unterschiedliche Formate aus 2 Variablen die mit 1 Command befüllt wurden.
Da fühle ich mich doch gleich mal an den jungen Pavel Chekov (Anton Yelchin) aus "Enterprise" erinnert.. hmmm.
Bitte Hilfe! Mir schwurbelt der Kopf
Ich bin gerade über ein Verhalten von PS gestolpert das ich mir nicht erklären kann. Falls jemand in den Tiefen der PS sattelfest ist, bitte ich mich aufzuklären:
Wo liegt das Problem?
Ich speichere ein DateTime in eine $env:Variable und eine $LocalVariable
[datetime]$env:DT = (Get-Date -format "yyyy.MM.dd HH:mm:ss")
[datetime]$DT = (Get-Date -format "yyyy.MM.dd HH:mm:ss")
gebe ich beide wieder aus bekomme ich das:
- 2020.12.22 19:44:39
- Dienstag, 22. Dezember 2020 19:44:39
Ich führe das auf die Culture von PS und der OS-GUI zurück, obwohl ich es ad hoc nicht beweisen kann. Wird aber nochmal etwas komischer.
Gebe ich beides innerhalb eines String aus, kommt das raus:
- Da ist Text dabei (Definition $env:DT): 2020.12.22 19:44:39
- Da ist Text dabei (Definition $DT): 12/22/2020 19:44:39
Ich bekomme also 3 unterschiedliche Formate aus 2 Variablen die mit 1 Command befüllt wurden.
Da fühle ich mich doch gleich mal an den jungen Pavel Chekov (Anton Yelchin) aus "Enterprise" erinnert.. hmmm.
Bitte Hilfe! Mir schwurbelt der Kopf
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 634279
Url: https://administrator.de/contentid/634279
Ausgedruckt am: 23.11.2024 um 22:11 Uhr
2 Kommentare
Neuester Kommentar
Zu 1:
Ganz einfach, get-date mit dem -Format Parameter liefert kein Objekt von Typ DateTime zurück sondern einen String! Du aber wandelst durch das explizite Umwandeln der Variablen mit [DateTime] diesen String wieder in ein DateTimeObject zurück und das triggert die automatische Datumsumwandlung über die Parse-Methode der current culture. Bei dem einen klappt das bei der anderen nicht (Cultureabhängig)
Du hast hier offensichtlich nur ein Type Missverständnis
Zu 2:
Das Objects vom Typ DateTime innerhalb von Strings die englische Culture bekommen ist normal das ist der Default für eine Stringumwandlung. Deswegen wandelt man das ja vorher zu einem String mit der entsprechenden Culture dann kommt das auch korrekt raus.
Wenn du der PS nicht sagst wie sie zu formatieren hat macht sie eben was sie will und nicht was du willst 😉
Ganz einfach, get-date mit dem -Format Parameter liefert kein Objekt von Typ DateTime zurück sondern einen String! Du aber wandelst durch das explizite Umwandeln der Variablen mit [DateTime] diesen String wieder in ein DateTimeObject zurück und das triggert die automatische Datumsumwandlung über die Parse-Methode der current culture. Bei dem einen klappt das bei der anderen nicht (Cultureabhängig)
Du hast hier offensichtlich nur ein Type Missverständnis
Zu 2:
Das Objects vom Typ DateTime innerhalb von Strings die englische Culture bekommen ist normal das ist der Default für eine Stringumwandlung. Deswegen wandelt man das ja vorher zu einem String mit der entsprechenden Culture dann kommt das auch korrekt raus.
Wenn du der PS nicht sagst wie sie zu formatieren hat macht sie eben was sie will und nicht was du willst 😉