NEWS
[gelöst] Formatieren Datum in VIS
-
Hallo,
ich weiß nicht ob ich den Wald vor lauter Bäumen nicht sehe , aber ich habe mal ne Frage.
Ich habe ein Objekt "weatherunderground.0.forecast_day.1d.date" mit folgenden aktuellen Inhalt "07:00 PM CET am 08. Februar 2018".
Wie kann ich nun in VIS das Format des Datums anpassen, damit ich beispielsweise nur den Wochentag "Donnerstag" oder das deutsche Datum erhalte "08.02.18"?
vg
Falk
-
ich wüsste das auch gerne.
07:00 PM CET am 24. Februar 2018
das wird bei mir angezeigt,
Hätte aber gern
Sam 24
Gruß
-
@schittl, hast du schon eine Lösung gefunden?
-
-
aus dem Teil "07:00 PM CET am 08. Februar 2018" .. schätze garnicht.. bzw nicht einfach so
musst du halt selber Hand anlegen und dir was zusammenbasteln.. per Javascript oder Blockly
-
ich wüsste das auch gerne.
07:00 PM CET am 24. Februar 2018
das wird bei mir angezeigt,
Hätte aber gern
Sam 24
Gruß `
Hier ein Skript, hat doch etwas länger gedauert. Leider führt die ioBroker Funktion getDateObject nicht zum gewünschten Ergebnis, wenn der Monat auf deutsch kommt. Habe jetzt eine eigene Funktion gemacht.
Alles schön dokumentiert.
Ach, und wegen der Einfachheit geht das erstmal nur in 2018. Du wirst die Stelle im Code finden und kannst sie anpassen.
!
/* Wunderground transfer Skript ! übersetzt die Datumsinformationen ! 02.03.2018 erstellt von pix ! */ ! const logging = true; const fC = false; const idQuelle = "weatherunderground.0.forecast_day.1d.date"/*forecast for*/; const idZiel = "javascript." + instance + ".wunderground.Tag.1"; ! createState(idZiel, " ", fC, { name: "Regen Wochentag, Tag", desc: "Extrahierte Datumsinformationen", type: "string" }); ! // konvertiert zB "März" -> "03" function convertMonat (monat) { var monat_zahl_str = ""; switch (monat) { case "Januar" : monat_zahl_str = "01"; break; case "Februar" : monat_zahl_str = "02"; break; case "März" : monat_zahl_str = "03"; break; case "April" : monat_zahl_str = "04"; break; case "Mai" : monat_zahl_str = "05"; break; case "Juni" : monat_zahl_str = "06"; break; case "Juli" : monat_zahl_str = "07"; break; case "August" : monat_zahl_str = "08"; break; case "September" : monat_zahl_str = "09"; break; case "Oktober" : monat_zahl_str = "10"; break; case "November" : monat_zahl_str = "11"; break; case "Dezember" : monat_zahl_str = "12"; break; } return (monat_zahl_str); ! } ! function writeDate (datum_string) { if (logging) log(datum_string); var datum_string_arr = datum_string.split(" PM CET am "); // Quellstring teilen bei angegebener Zeichenkette, Ergebnis in Array var uhrzeit_string = datum_string_arr[0]; var datumdeutsch_string = datum_string_arr[1]; if (logging) log(uhrzeit_string); if (logging) log(datumdeutsch_string); // 03\. März 2018 ! // " . März " rausfiltern var pattern = /\D+/g; //einer oder mehrere Nichtzahlen if (logging) log(pattern.source); var monat_teil_string = pattern.exec(datumdeutsch_string); if (logging) log(monat_teil_string.toString()); // Punkt und Leerzeichen abschneiden monat_teil_string = monat_teil_string.toString().replace(". ",""); if (logging) log("Teilstring: " + monat_teil_string); // Deutschen Monatsnamen in Zahlen (mit führender 0) wandeln var datum_monat_zahl_string = convertMonat(monat_teil_string.trim()); if (logging) log("Monat Zahl: " + datum_monat_zahl_string); ! // "Datum_Tag" var pattern2 = /\d+/; // die ersten Zahlen des Strings finden, Jahr egal var datum_tag_zahl_string = pattern2.exec(datumdeutsch_string).toString(); if (logging) log("Tag: " + datum_tag_zahl_string); log("Datum: " + datum_tag_zahl_string + "." + datum_monat_zahl_string + ".2018 " + uhrzeit_string); var datum_obj = getDateObject(datum_tag_zahl_string + "." + datum_monat_zahl_string +" " + uhrzeit_string); var datum = new Date (datum_obj); ! var wochentag_string = formatDate(datum, "WW"); var tag_string = formatDate(datum, "TT"); var ausgabe = wochentag_string + " " + tag_string; if (logging) log("Wunderground: " + ausgabe); setState(idZiel, ausgabe); } ! writeDate(getState(idQuelle).val); ! on(idQuelle, function (obj) { writeDate(obj); }); !
Ich hoffe das klappt, denn ich kann ein paar Tage nicht helfen.
Gruß
Pix
-
Grüß dich.
besten dank…. aber irgendwie stehe ich auf dem schlauch.
was hat das mit Regen zu tun? :shock:
Aber eigentlich sollte ja aus Weatherunderground-forecast_day-1d-day... das Datum geändert werden.
nicht was mit regen....
oder verstehe ich das falsch?
bei mir ist nun diese Anzeige...
2562_12.png -
So bin wieder da.
Die Bezeichnung der Objekte ist natürlich deine Sache, schreib doch "Vorhersage" statt "Regen". Ich werde das auch nicht wieder ändern, musst du selbst machen.
Warum eigentlich dieser ganze Aufwand? Ich möchte gern wissen, wofür ich dir das gebastelt habe.
Pix
-
Moin,
ich danke dir auch für da schreiben und den Aufwand…
es geht darum, das ich eine reine Vis erstelle für Wetter... und da soll auch eine Vorhersage vom Wetter hin, aber das sieht ja bescheiden aus wenn da
"07:00 PM CET am 08. Februar 2018"
steht.
deswegen Tag und Datum also zB "Do 29"
dafür der aufwand.
oder war das zu umständlich?
-
@pix:Hier ein Skript, hat doch etwas länger gedauert. Leider führt die ioBroker Funktion getDateObject nicht zum gewünschten Ergebnis, wenn der Monat auf deutsch kommt. Habe jetzt eine eigene Funktion gemacht. `
Danke für das Skript. Funktioniert. Ich dachte mir nur es geht auch auf dem einfachen Weg mit einem Widget und Datumsformatanpassung. Naja, besser es so als gar nicht ;).
vg
Falk
-
Etwas weniger aufwändig, aber ohne Script geht es wohl nicht:
var time = '07:00 PM CET am 24\. Februar 2018'; const monate = [' ','Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember']; time = time.split(' '); var date = time[6] + '-' + monate.indexOf(time[5]) + '-' + time[4]; date = formatDate(new Date(date), 'W DD.MM.YY'); log(date);
-
Durch ausprobieren , falls es noch jemand braucht, per Blockly….
Hatte als Datum auch sowas krummes mit +1.00 dahinter.Obwohl Zeitzone etc. alles korrekt ist.
So sieht es unkonvertiert aus: