slauf82
Goto Top

Powershell: Datumteilstring mit 6 Stellen (mit Bindestrichen dazwischen 8 Stellen) gegen Datumteilstring mit 8 Stellen ersetzen

Hallo,

ich habe einen String, der beinhaltet ein Datum in der Form YYYY-MM.DD, allerdings ist bei Monat und Tag keine führende Null vorhanden, sodass der Teilstring von 6 bist 8 Stellen umfasst.
Wie kann ich diesen Teilstring einheitlich in einen 8 Zeichen Teilstring mit führenden Nullen bei Monat und Tag ersetzen in der Form YYYY-MM-DD oder noch besser YYYYMMDD ?

Content-Key: 368775

Url: https://administrator.de/contentid/368775

Printed on: April 20, 2024 at 06:04 o'clock

Member: Pjordorf
Pjordorf Mar 21, 2018 at 10:16:45 (UTC)
Goto Top
Hallo,

Zitat von @slauf82:
ich habe einen String,
Welches OS?

der beinhaltet ein Datum in der Form YYYY-MM.DD, allerdings ist bei Monat und Tag keine führende Null vorhanden, sodass der Teilstring von 6 bist 8 Stellen umfasst.
Wo genau kommt das Datum her?

Wie kann ich diesen Teilstring einheitlich in einen 8 Zeichen Teilstring mit führenden Nullen bei Monat und Tag ersetzen in der Form YYYY-MM-DD oder noch besser YYYYMMDD ?
Wenn dein uns unbekanntes OS und die Quelle deines Datums es nicht hergibt, wirst du selbst das Datum teilen müssen um dann zu schauen ob Monat und Tag ohne führende Null sind. Das kannst du per Länge machen oder per Wert z.B. Wenn Len(Monat) <= 9 dann Mon="0" + Mon oder halt Wenn Mon >= 9 dann Mon = "0" + Mon.

Gruß,
Peter
Member: NetzwerkDude
Solution NetzwerkDude Mar 21, 2018 at 10:29:43 (UTC)
Goto Top
das get-date cmdlet ist da recht flexibel - so kannst du dem als input eine vielzahl an formaten geben, und eine eigne ausgabe definieren, z.b.
get-date -date 2017-10.2 -format yyyMMdd

(poste grad vom handy, kann den befehl nicht wirklich testen)
Member: Pjordorf
Solution Pjordorf Mar 21, 2018 updated at 11:06:51 (UTC)
Goto Top
Hallo,

Zitat von @slauf82:
Wie kann ich diesen Teilstring einheitlich in einen 8 Zeichen Teilstring mit führenden Nullen bei Monat und Tag ersetzen in der Form YYYY-MM-DD oder noch besser YYYYMMDD ?
Warum nicht mal ein get-help get-date -examples eingetippelt und dir dann das "Beispiel 3" mal angeschaut?
get-date -uformat "%Y%m%d"  
Gruß,
Peter
Member: erikro
Solution erikro Mar 21, 2018 at 11:02:31 (UTC)
Goto Top
PS P:\> get-date -date 2018-1-2 -format yyyyMMdd
20180102

hth
Member: Kraemer
Kraemer Mar 21, 2018 updated at 11:16:31 (UTC)
Goto Top
Zitat von @Pjordorf:

Hallo,

Zitat von @slauf82:
ich habe einen String,
Welches OS?
war mir gar nicht bewusst, dass die Powershell da Unterschiede macht...

der beinhaltet ein Datum in der Form YYYY-MM.DD, allerdings ist bei Monat und Tag keine führende Null vorhanden, sodass der Teilstring von 6 bist 8 Stellen umfasst.
Wo genau kommt das Datum her?
und wenn er es sich ausgedacht hat ... was spielt das für eine Rolle?

Wie kann ich diesen Teilstring einheitlich in einen 8 Zeichen Teilstring mit führenden Nullen bei Monat und Tag ersetzen in der Form YYYY-MM-DD oder noch besser YYYYMMDD ?
Wenn dein uns unbekanntes OS und die Quelle deines Datums es nicht hergibt, wirst du selbst das Datum teilen müssen um dann zu schauen ob Monat und Tag ohne führende Null sind. Das kannst du per Länge machen oder per Wert z.B. Wenn Len(Monat) <= 9 dann Mon="0" + Mon oder halt Wenn Mon >= 9 dann Mon = "0" + Mon.
muss er nicht, wie du vielleicht selbst schon festgestellt hast. Die Lösung von @NetzwerkDude und @erikro ist schon richtig. Darüber hinaus, wäre ein Regex wesentlich eleganter, wie ein Fehleranfälliger Versuch über Längen etc.

PS: Len gibt es nicht in der Powershell. Sage nur .length
Member: slauf82
slauf82 Mar 22, 2018 at 10:02:31 (UTC)
Goto Top
Hatte auch eine Lösung gefunden:
$date = "2018-3-22".split("-");
und dann date[1] und date[2] untersucht ob kleiner 10 und falls ja dann $date[1] = "0" + $date[1];
so hätte es auch funktioniert
für die ausgabe dann anschließend die einzelteile neu verbinden aber ohne "-" als zeichen dazwischen.

eure lösungen sind aber wesentlich eleganter und mit viel weniger code zu lösen, deswegen habe ich eure lösung übernommen.

vielen dank für die hilfe face-smile