NEWS
Alter berechnen
-
@david-g Wenn Du das Blockly von @OliverIO nimmst und ich den Geburtstag deines Kindes.
und ich das teste mit dem 4.8.2022 kommen genau 4 Jahre raus.
Wenn Du bei Ende nichts eingibst - sein Alter auf den Tag genau für heute.
Also 3 Jahre 11 Monate und 22 Tage
Bei dem Code ist halt moment a das Enddatum.
-
Sorry hätte das Beispiel hier rein kopieren müssen
Und nicht in den andere älteren thread -
Hey,
melde mich nach ewigen nochmal zu dem Thread.
Ich wollte das Blockly jetzt anstatt zum berechnen des Alters zum errechnen eines Countdowns bis zum Geburtstag verwenden.Bei Start das aktuelle Datum rein und bei Ende den Geburtstag.
Allerdings liege ich dort daneben.
Kann ich die Funktion für die "Richtung" nicht nehmen? Oder habe ich einen Fehler beim nachrechnen?Von heute dem 16.6 bis zum 6.8 komme ich auf 1 Monat und 20 Tage.
Hab es mii hier mal visualisiert. An welchem Tag er wie viele Tage anzeigen müsste:06.08.2023 0 Geburtstag 05.08.2023 1 04.08.2023 2 03.08.2023 3 02.08.2023 4 01.08.2023 5 31.07.2023 30.07.2023 29.07.2023 28.07.2023 27.07.2023 26.07.2023 25.07.2023 24.07.2023 23.07.2023 22.07.2023 21.07.2023 20.07.2023 19.07.2023 18.07.2023 17.07.2023 16.07.2023 15.07.2023 14.07.2023 13.07.2023 12.07.2023 11.07.2023 10.07.2023 09.07.2023 08.07.2023 07.07.2023 06.07.2023 05.07.2023 04.07.2023 03.07.2023 02.07.2023 01.07.2023 30.06.2023 6 29.06.2023 7 28.06.2023 8 27.06.2023 9 26.06.2023 10 25.06.2023 11 24.06.2023 12 23.06.2023 13 22.06.2023 14 21.06.2023 15 20.06.2023 16 19.06.2023 17 18.06.2023 18 17.06.2023 19 16.06.2023 20
Beim Skript komme ich jedoch auf 21 Tage.
-
-
Den hab ich sogar schon drauf ^^.
Der Adapter bietet die Werte aber nicht in der Form aufbereitet. -
@david-g sagte in Alter berechnen:
Den hab ich sogar schon drauf ^^.
Der Adapter bietet die Werte aber nicht in der Form aufbereitet.Ev. kann dir @haus-automatisierung das im Adapter einbauen?
-
@sigi234 Kann ich gern machen
-
Das wäre cool.
Part 1 hab ich zwar schon in einem Blockly, jedoch wären (beide Parts) starke Ergänzungen im Adapter.Die Visu zB für meinen Sohn zeigt zB:
Alter
4 Jahre 10 Monate 10 Tage
Geburtstag in
1 Monat 19 Tage 15 Stunden 34 Minuten 22 Sekunden (Wobei es eigentlich auf den Tag reicht ^^)EDIT:
So berechne ich im Moment das Alter:
var moment = require( "moment"); var b = new moment(Anfang,"DD.MM.YYYY"); var a = Ende ? moment(Ende,"DD.MM.YYYY") : new moment(); var years = a.diff(b, 'year'); b.add(years, 'years'); var months = a.diff(b, 'months'); b.add(months, 'months'); var days = a.diff(b, 'days'); return years + ' Jahre ' + months + ' Monate ' + days + ' Tage';
Und so die Zeit bis zum Geburtstag.
Allerdings nicht im ioBroker. Das hab ich so in einer Widgetapp am Androidsmartphone (bekomme ich auch nicht an den ioBroker gesendet).$lv(#,8M6d)+ lv(#,##+0h0m0sr1d)+ (df(M,##)-df(M)-(df(d)>df(d,##))+12)%12$M $ df(d,##)+if(df(d,##)>=df(d),-df(d),tf(1da1M,D))$D $ tf(##+a2d,"h'H' m'M' s'S'")$
Das kapiere ich aber nicht
Hat mir auf Discord jmd im KWGT Channel erstellt. -
@david-g sagte in Alter berechnen:
1 Monat 19 Tage 15 Stunden 34 Minuten 22 Sekunden (Wobei es eigentlich auf den Tag reicht ^^)
Minuten und Sekunden geht ja eh nicht - sonst müsste ich den Adapter ja nur dafür auf Daemon umstellen und den Datenpunkt ständig aktualisieren.
Ich habe gerade Version 2.3.0 veröffentlicht
-
@david-g
Der Adapter MyTime hat ein Count-down Widget,
Das beliebig konfiguriert werden kann -
Sehr cool, danke.
"currentAgeText": "59 years, 11 months and 9 days"
2 Fragen.
- Denkst du den "countdown" kann man auch einbauen?
- Kann man years usw auch in deutsch machen? Ggf in den Settings einstellbar
@oliverio sagte in Alter berechnen:
@david-g
Der Adapter MyTime hat ein Count-down Widget,
Das beliebig konfiguriert werden kannDas bekomme ich in dem Adapter irgendwie nicht hin.....
Das Jahr ändert sich ja auch regelmäßig. -
@david-g sagte in Alter berechnen:
Kann man years usw auch in deutsch machen? Ggf in den Settings einstellbar
Richtig, ist bereits in den Settings des Adapters konfigurierbar.
-
@david-g sagte in Alter berechnen:
Das Jahr ändert sich ja auch regelmäßig
ah ja, vergessen zu erwähnen. über die eingabe eines befehls in einem datenpunkt kann man den countdown timer direkt auf ein zieldatum setzen, dann berechnet er alles selber
einfach das datum als iso-datum angeben
https://github.com/oweitman/ioBroker.mytime#available-commands-for-the-cmd-datapointalso workflow ist,
in den einstellungen irgeneinen neuen timer anlegen. dadurch werden die datenpunkte angelegt. dann im objektbaum in den datenpunkt cmd deines timers dann bspw#2000-02-01T10:00:00
für das Datum nach deutscher schreibweise
1.2.2000, 10 Uhreingeben
-
@haus-automatisierung sagte in Alter berechnen:
@david-g sagte in Alter berechnen:
Kann man years usw auch in deutsch machen? Ggf in den Settings einstellbar
Richtig, ist bereits in den Settings des Adapters konfigurierbar.
Oh, Augen auf .........
Der Countdown im Adapter wäre schon was feines.@oliverio sagte in Alter berechnen:
@david-g sagte in Alter berechnen:
Das Jahr ändert sich ja auch regelmäßig
ah ja, vergessen zu erwähnen. über die eingabe eines befehls in einem datenpunkt kann man den countdown timer direkt auf ein zieldatum setzen, dann berechnet er alles selber
einfach das datum als iso-datum angeben
https://github.com/oweitman/ioBroker.mytime#available-commands-for-the-cmd-datapointalso workflow ist,
in den einstellungen irgeneinen neuen timer anlegen. dadurch werden die datenpunkte angelegt. dann im objektbaum in den datenpunkt cmd deines timers dann bspw#2000-02-01T10:00:00
für das Datum nach deutscher schreibweise
1.2.2000, 10 Uhreingeben
Hm, irgendwie bekomme ich immer einen weißen Einstellungsbildschirm, wenn ich ein Datum bei den Timern eingeben möchte. Egal ob von Hand oder dem Kalender.
Wenn ich es denn dann schaffe, müsste ich also für jeden Geb ein Skript schreiben was am Tag vom Geb den Timer neu setzt?
-
nein nicht ganz
- mytime adapter konfiguration öffnen
- countdown tab wählen (nicht time series, das ist eine andere funktionalität)
- einen neuen timer anlegen, name bspw "abc", zeitdaten sind egal, einfach anlegen
- dann adapter einstellungen speichern und schließen
- dann den iobroker objeke/tab öffnen
- dort den Ast mytime.0 suchen und erweitern
- darunter müsste dann ein knotenpunkt mit dem namen "abc" auftauchen
- auch den erweitern
- darunter findest du nun den datenpunkt mit dem namen "cmd"
- dort reinklicken, ein eingabefenster öffnet sich
- dort den folgenden befehl eingeben -> nächste Zeile
#2025-01-01T10:00:00 - eingabefenster bestätigen und speichern
- nochmal in cmd klicken und folgendes eingeben
start - eingabefenster bestätigen und speichern
- vis öffnen
- in das widget suchfenster mytime eingeben
- dann daswidget mytime countdown plain auswählen und in den viewbereich ziehen mit dragNdrop
- in der widget einstellung bei countdown_oid den timerdatenpunkt auswählen. also bspw
mytime.0.countdown.abc.timer - dann müsste der countdown bis zum eingegebenen termin angezeigt und direkt runtergezählt werden
-
@david-g sagte in Alter berechnen:
Beim Skript komme ich jedoch auf 21 Tage.
...was meines Erachtens auch stimmt. Vom 16.6. bis 16.7. ist es 1 Monat. Und dann muss dein Sohnemann noch 21 Tage auf seinen Geburtstag warten. Geh das gern mal auf einem Kalender durch. Oder auch hier nachzuvollziehen: https://www.timeanddate.de/datum/zeitspanne-ergebnis?d1=16&m1=6&y1=2023&d2=06&m2=08&y2=2023
-
@david-g sagte in Alter berechnen:
Hat jemand eine Idee woran das liegt?
Zu deinem alten Post vom letzten Jahr: Da hast du bestimmt einen Dreher in deinem Funktionsaufruf drin. Denn in meiner Originalversion stimmts:
-
Habe ich hier dann einen Fehler für die anzuzeigenden Tage (Den Monat habe ich nicht gezahlt, eben 1 Monat)?
Datum. Tage verbleibend 06.08.2023 0 Geburtstag 05.08.2023 1 04.08.2023 2 03.08.2023 3 02.08.2023 4 01.08.2023 5 31.07.2023 30.07.2023 29.07.2023 28.07.2023 27.07.2023 26.07.2023 25.07.2023 24.07.2023 23.07.2023 22.07.2023 21.07.2023 20.07.2023 19.07.2023 18.07.2023 17.07.2023 16.07.2023 15.07.2023 14.07.2023 13.07.2023 12.07.2023 11.07.2023 10.07.2023 09.07.2023 08.07.2023 07.07.2023 06.07.2023 05.07.2023 04.07.2023 03.07.2023 02.07.2023 01.07.2023 30.06.2023 6 29.06.2023 7 28.06.2023 8 27.06.2023 9 26.06.2023 10 25.06.2023 11 24.06.2023 12 23.06.2023 13 22.06.2023 14 21.06.2023 15 20.06.2023 16 19.06.2023 17 18.06.2023 18 17.06.2023 19 16.06.2023 20
@sten-tor sagte in Alter berechnen:
@david-g sagte in Alter berechnen:
Hat jemand eine Idee woran das liegt?
Zu deinem alten Post vom letzten Jahr: Da hast du bestimmt einen Dreher in deinem Funktionsaufruf drin. Denn in meiner Originalversion stimmts:
Beim Alter kommt es hin, aber nicht bei der Zeit von heute bis zum Geburtstag.
-
@david-g sagte in Alter berechnen:
@sten-tor
Habe ich hier dann einen Fehler für die anzuzeigenden Tage (Den Monat habe ich nicht gezahlt, eben 1 Monat)?Üblicherweise wird von der größten Einheit zur kleinsten gerechnet und alle Einheiten abgerundet und nur die kleinste Einheit aufgerundet.
Du müsstest mit Monaten anfangen und dann schauen, wie viel Tage noch übrig bleiben. Also: 16.6. + 1 Monat = 16.7.
...und dann von diesem Datum aus die verbleibenden Tage zählen: 21.
Da Tage die kleinste Einheit ist, wird aufgerundet, so dass z.B. am 5.8. 23:00 immer noch "1 Tag" herauskommt. -
In meinem Beispiel habe ich ja am 5.8 noch 1 Tag da stehen. Wenn ich das durchzähle und den ganzen Monat weg lasse komme ich am 16.6 auf genau 20 Tage.
Ich denke das stimmt auch.
Der Countdown Adapter sieht es auch wie ich. Der zeigt mit jetzt einen Tag später 18 Tage und 12h an (die 18, da nicht wie du auch gesagt hast aufgerundet wird weil die h noch kommen).