danielbodensee
Goto Top

Datum aus Text prüfen und formatieren

Hallo zusammen,

ich bin gerade an einem Problem mit zu verarbeitenden Datumfelder, bei denen ich ein Denkanstoss brauche.

Aus durchzugehenden Text-Dateien muss ich ein Datum übernehmen und in das benötigte Format umbauen. Jetzt habe ich realisiert, das es vorkommen kann, dass dieses Feld auch mal nicht belegt ist.

Gegeben ist ein mögliches Datum: '2019-12-19T07:55:38+01:00', daraus soll aus "yyyy-MM-ddTHH:mm:ssZ" dann "yyyy-MM-dd hh:mm:ss" werden.

Get-Date -Format fällt aus da dieses Feld ja auch mal leer sein kann, denn dann wird ein "Cannot convert value" Fehler ausgelöst.

Wie macht Ihr das? Denke ich zu kompliziert das ich den Dreh nicht finde?

Viele Grüsse,
DniBo

Content-ID: 82484181619

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

Ausgedruckt am: 17.11.2024 um 23:11 Uhr

Crusher79
Lösung Crusher79 13.01.2024 aktualisiert um 23:49:41 Uhr
Goto Top
Moin,

ist doch kein Problem. Gibt viele Wege. Z.B. mit try {}...catch{}

$datum = try {Get-Date  '2019-12-19T07:55:38+01:00'} catch {}  

Leer oder sowas wie 20xxxx19 würde dann die Variable einfach nicht füllen und weiter gehts. Formatieren kann man es einfach als String..

$datum = try {Get-Date  '2019-12-19T07:55:38+01:00'} catch {}  

if ($datum -ne $null) {$DateStr = '{0:yyyyMMdd}' -f $datum}  

$DateStr


PS: Habe es nochmal korrigiert. Wenn man Vairable explizit als datetime deklariert [datetime], dann wird bei der Exception erneuter Fehler geworfen, da man die nicht mit NULL anlegen kann.

Oben nur als Schnellschuss würde es bei Fehler NULL sein und das kann man wiederum mit IF z.B. abfangen.

Mit try...catch kann man auch mehrere Zeilen und ganze Codeabschnitte behandeln! Ist nur ein schnelles Bsp.
10138557388
Lösung 10138557388 14.01.2024 aktualisiert um 08:36:27 Uhr
Goto Top
Aloha!

DateTime hat passende "TryParse" Methoden dafür die True oder False bei leerem String oder nicht parsebarem Datum statt einer Exception liefern, dann benötigt man auch kein TryCatch
$string = '2019-12-19T07:55:38+01:00'  
$d = [datetime]::minvalue
if([datetime]::TryParse($string,[ref]$d)){
   $dstring = $d.ToString("yyyy-MM-dd HH:mm:ss")  
   $dstring
}else{
   "Unable to parse date string."  
}
https://learn.microsoft.com/de-de/dotnet/api/system.datetime.tryparse?vi ...

Es gibt auch noch TryParseExact, bei der man ein exaktes Format spezifizieren kann welches das Datum im Ausgangszustand haben muss damit True zurückgegeben wird.


Pj
DanielBodensee
DanielBodensee 22.01.2024 um 17:13:40 Uhr
Goto Top
Hallo zusammen,

sorry für die späte Antwort.

Vielen Dank für die Hilfe, ich haben die Lösung von Pj genommen, hat mir sehr geholfen.


Nochmals besten Dank,
DniBo
Crusher79
Crusher79 23.01.2024 um 08:47:47 Uhr
Goto Top
Alles gut. Auch wenn der nun abgemeldet ist... oO