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-Key: 82484181619

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

Printed on: April 27, 2024 at 12:04 o'clock

Member: Crusher79
Solution Crusher79 Jan 13, 2024 updated at 22:49:41 (UTC)
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.
Mitglied: 10138557388
Solution 10138557388 Jan 14, 2024 updated at 07:36:27 (UTC)
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
Member: DanielBodensee
DanielBodensee Jan 22, 2024 at 16:13:40 (UTC)
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
Member: Crusher79
Crusher79 Jan 23, 2024 at 07:47:47 (UTC)
Goto Top
Alles gut. Auch wenn der nun abgemeldet ist... oO