NEWS
Am zeitformat zu 24h, aus strin convertieren
-
@jumbo125 Du stellst mich vor Herausforderungen - aber ich hab es hingebracht.
Der JSONATA-Code ist ein kleines Programm geworden.
( $convert := function($v){( $arr := $match($v.match,/(\d*\d):(\d\d\W*)([a,p]m)/).groups; $number($arr[0]) + ($arr[2]="pm" ? 12 : 0) & ":" & $trim($arr[1]) )}; $replace($,/\d*\d:\d\d\W*[a,p]m/, $convert) )
-
@mickym
wauw schut echt gut aus!!!!
sind die mehrfachen leerzeichen for dem time value wichtig, damit es als uhrzeit erkennt wird? das habe ich leider nicht....
mein text sieht bspw so aus:
🟡 Warnstufe 2/4 Gewitterwarnung (Fr. 03:00 PM - Sa. 06:00 AM) Gewitter mit Sturmböen sind zu erwarten.aber ich kann es auch in php machen, falls alle stricke reißen....
-
@jumbo125 hat mit den Leerzeichen nichts zu tun. Man muss es halt um die Großbuchstaben ergänzen bzw. bei den regulären Ausdrücken die Case-Insensitiv Option wählen.
($convert := function($v){( $arr := $match($v.match,/(\d*\d):(\d\d\W*)([a,p]m)/i).groups; $number($arr[0]) + (($arr[2]="pm" or $arr[2]="PM") ? 12 : 0) & ":" & $trim($arr[1]) )}; $replace($,/\d*\d:\d\d\W*[a,p]m/i, $convert))
-
@mickym
Wahnsinn!!!!
ich kenne die ausdrücke auch bei diversen string functionen von php und js. aber da muss ich so ehrlich sein und zugeben, dass ich da immer wieder nachlesen muss, da ich mit den ganzen Backslash, klein und großschreibungen immer durcheinander komme
Danke dir!!!!! -
Na ja, ich muss da auch ausprobieren. Aber sowohl bei JSONATA gibts eine try Seite und bei regulären Ausdrücken mehrere.JSONATA ist in meinem Augen eine Wahnsinnsbibliothek, die einem viel Codeschreiben abnimmt. Ich bin dazu gekommen, nicht weil ich Blockly sondern NodeRed nutze.
-
@mickym
danke. dachte ich mir schon aufgrund deines logos -
@jumbo125 Hier schau mal, wenn Du dieses Fenster in der JSONTA Doku öffnest:
https://try.jsonata.org/WwOgkBnOf
kannst Du direkt ausprobieren und siehst das Ergebnis bei jedem Tastendruck.
Links die Eingabe, rechts oben Dein Code und rechts unten das Ergebnis:Ich kanns Dir nur empfehlen.
Zum Testen der regulären Ausdrücke verwende ich diese Seite: https://regex101.com/
Du hast damit auch immer Erklärungen und siehst Gruppen und Matches.
-
@mickym danke dir!
-
@mickym
Verzeih wenn ich lästig bin.
ich wollte mich mal mit regex etwas auseinandersetzten und dachte ich starte mit deinem code.....
aber da kommt gleich mal eine fehlermeldung bei der von dir empfohlenen seite..... könntest du mir einen tipp geben, bitteDanke!
-
@jumbo125 Es handelt sich um JSONATA und nicht um JSON. Also Dein Tool ist völlig verkehrt. Du musst den JSONATA Editor verwenden und meinen LInk aufrufen.
https://try.jsonata.org/WwOgkBnOf
Reguläre Ausdrücke regex - sind lediglich die Teile zwischen den beiden Schrägstrichen zum Beispiel:
/\d*\d:\d\d\W*[a,p]m/
oder
/(\d*\d):(\d\d\W*)([a,p]m)/
Wenn ich Dir den Code erklären soll, dann musst Du es halt sagen, dann gehen wir das Schritt für Schritt durch - aber dann musst Dir halt Zeit nehmen.
Wenn Du nur die regulären Ausdrücke testen willst, dann hier: https://regex101.com/r/6vvJNj/1
-
@jumbo125 Oder innerhalb der comvert Funktion werden die 3 Gruppen aus dem amerikanischen Zeitformaten gebildet: