Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Alter berechnen

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Alter berechnen

    This topic has been deleted. Only users with topic management privileges can see it.
    • David G.
      David G. last edited by

      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.

      sten-tor 1 Reply Last reply Reply Quote 0
      • sigi234
        sigi234 Forum Testing Most Active @David G. last edited by

        @david-g

        Wäre das was für dich?

        https://github.com/klein0r/ioBroker.birthdays

        David G. 1 Reply Last reply Reply Quote 1
        • David G.
          David G. @sigi234 last edited by

          @sigi234

          Den hab ich sogar schon drauf ^^.
          Der Adapter bietet die Werte aber nicht in der Form aufbereitet.

          sigi234 1 Reply Last reply Reply Quote 0
          • sigi234
            sigi234 Forum Testing Most Active @David G. last edited by

            @david-g sagte in Alter berechnen:

            @sigi234

            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?

            haus-automatisierung 1 Reply Last reply Reply Quote 1
            • haus-automatisierung
              haus-automatisierung Developer Most Active @sigi234 last edited by

              @sigi234 Kann ich gern machen

              David G. 1 Reply Last reply Reply Quote 2
              • David G.
                David G. @haus-automatisierung last edited by David G.

                @haus-automatisierung

                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';
                

                Screenshot 2023-06-16 082938.png

                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.

                haus-automatisierung OliverIO 2 Replies Last reply Reply Quote 0
                • haus-automatisierung
                  haus-automatisierung Developer Most Active @David G. last edited by

                  @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. 1 Reply Last reply Reply Quote 0
                  • OliverIO
                    OliverIO @David G. last edited by

                    @david-g
                    Der Adapter MyTime hat ein Count-down Widget,
                    Das beliebig konfiguriert werden kann

                    1 Reply Last reply Reply Quote 0
                    • David G.
                      David G. @haus-automatisierung last edited by

                      @haus-automatisierung

                      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 kann

                      Das bekomme ich in dem Adapter irgendwie nicht hin.....
                      Das Jahr ändert sich ja auch regelmäßig.

                      haus-automatisierung OliverIO 2 Replies Last reply Reply Quote 0
                      • haus-automatisierung
                        haus-automatisierung Developer Most Active @David G. last edited by

                        @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. 1 Reply Last reply Reply Quote 0
                        • OliverIO
                          OliverIO @David G. last edited by OliverIO

                          @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-datapoint

                          also 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 Uhr

                          eingeben

                          1 Reply Last reply Reply Quote 0
                          • David G.
                            David G. @haus-automatisierung last edited by David G.

                            @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-datapoint

                            also 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 Uhr

                            eingeben

                            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.

                            Animation.gif

                            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?

                            OliverIO 1 Reply Last reply Reply Quote 0
                            • OliverIO
                              OliverIO @David G. last edited by OliverIO

                              @david-g

                              nein nicht ganz

                              1. mytime adapter konfiguration öffnen
                              2. countdown tab wählen (nicht time series, das ist eine andere funktionalität)
                              3. einen neuen timer anlegen, name bspw "abc", zeitdaten sind egal, einfach anlegen
                              4. dann adapter einstellungen speichern und schließen
                              5. dann den iobroker objeke/tab öffnen
                              6. dort den Ast mytime.0 suchen und erweitern
                              7. darunter müsste dann ein knotenpunkt mit dem namen "abc" auftauchen
                              8. auch den erweitern
                              9. darunter findest du nun den datenpunkt mit dem namen "cmd"
                              10. dort reinklicken, ein eingabefenster öffnet sich
                              11. dort den folgenden befehl eingeben -> nächste Zeile
                                #2025-01-01T10:00:00
                              12. eingabefenster bestätigen und speichern
                              13. nochmal in cmd klicken und folgendes eingeben
                                start
                              14. eingabefenster bestätigen und speichern
                              15. vis öffnen
                              16. in das widget suchfenster mytime eingeben
                              17. dann daswidget mytime countdown plain auswählen und in den viewbereich ziehen mit dragNdrop
                              18. in der widget einstellung bei countdown_oid den timerdatenpunkt auswählen. also bspw
                                mytime.0.countdown.abc.timer
                              19. dann müsste der countdown bis zum eingegebenen termin angezeigt und direkt runtergezählt werden
                              1 Reply Last reply Reply Quote 0
                              • sten-tor
                                sten-tor @David G. last edited by

                                @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. 1 Reply Last reply Reply Quote 0
                                • sten-tor
                                  sten-tor @David G. last edited by

                                  @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:
                                  IMG_20230617_002404.jpg

                                  1 Reply Last reply Reply Quote 0
                                  • David G.
                                    David G. @sten-tor last edited by David G.

                                    @sten-tor

                                    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:
                                    IMG_20230617_002404.jpg

                                    Beim Alter kommt es hin, aber nicht bei der Zeit von heute bis zum Geburtstag.

                                    1 Reply Last reply Reply Quote 0
                                    • sten-tor
                                      sten-tor last edited by

                                      @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.

                                      David G. 1 Reply Last reply Reply Quote 0
                                      • David G.
                                        David G. @sten-tor last edited by

                                        @sten-tor

                                        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).

                                        OliverIO sten-tor 2 Replies Last reply Reply Quote 0
                                        • OliverIO
                                          OliverIO @David G. last edited by

                                          @david-g
                                          Ich habe bei mir auf die Berechnung der Jahre und Monate verzichtet, da es einiges an Aufwand benötigt, diese richtig zu berechnen.

                                          1 Reply Last reply Reply Quote 0
                                          • sten-tor
                                            sten-tor @David G. last edited by

                                            @david-g Vielleicht kann ich dich damit überzeugen:

                                            Wenn heute der 16.06.2023 ist, dann beträgt die...

                                            ...Dauer bis zum 16.06.2023: 0 Monate und 0 Tage
                                            ...Dauer bis zum 17.06.2023: 0 Monate und 1 Tag
                                            ...Dauer bis zum 18.06.2023: 0 Monate und 2 Tage
                                            ...Dauer bis zum 19.06.2023: 0 Monate und 3 Tage
                                            ...Dauer bis zum 20.06.2023: 0 Monate und 4 Tage
                                            ...Dauer bis zum 21.06.2023: 0 Monate und 5 Tage
                                            ...Dauer bis zum 22.06.2023: 0 Monate und 6 Tage
                                            ...Dauer bis zum 23.06.2023: 0 Monate und 7 Tage
                                            ...Dauer bis zum 24.06.2023: 0 Monate und 8 Tage
                                            ...Dauer bis zum 25.06.2023: 0 Monate und 9 Tage
                                            ...Dauer bis zum 26.06.2023: 0 Monate und 10 Tage
                                            ...Dauer bis zum 27.06.2023: 0 Monate und 11 Tage
                                            ...Dauer bis zum 28.06.2023: 0 Monate und 12 Tage
                                            ...Dauer bis zum 29.06.2023: 0 Monate und 13 Tage
                                            ...Dauer bis zum 30.06.2023: 0 Monate und 14 Tage
                                            ...Dauer bis zum 01.07.2023: 0 Monate und 15 Tage
                                            ...Dauer bis zum 02.07.2023: 0 Monate und 16 Tage
                                            ...Dauer bis zum 03.07.2023: 0 Monate und 17 Tage
                                            ...Dauer bis zum 04.07.2023: 0 Monate und 18 Tage
                                            ...Dauer bis zum 05.07.2023: 0 Monate und 19 Tage
                                            ...Dauer bis zum 06.07.2023: 0 Monate und 20 Tage
                                            ...Dauer bis zum 07.07.2023: 0 Monate und 21 Tage
                                            ...Dauer bis zum 08.07.2023: 0 Monate und 22 Tage
                                            ...Dauer bis zum 09.07.2023: 0 Monate und 23 Tage
                                            ...Dauer bis zum 10.07.2023: 0 Monate und 24 Tage
                                            ...Dauer bis zum 11.07.2023: 0 Monate und 25 Tage
                                            ...Dauer bis zum 12.07.2023: 0 Monate und 26 Tage
                                            ...Dauer bis zum 13.07.2023: 0 Monate und 27 Tage
                                            ...Dauer bis zum 14.07.2023: 0 Monate und 28 Tage
                                            ...Dauer bis zum 15.07.2023: 0 Monate und 29 Tage
                                            ...Dauer bis zum 16.07.2023: 1 Monat und 0 Tage
                                            ...Dauer bis zum 17.07.2023: 1 Monat und 1 Tag
                                            ...Dauer bis zum 18.07.2023: 1 Monat und 2 Tage
                                            ...Dauer bis zum 19.07.2023: 1 Monat und 3 Tage
                                            ...Dauer bis zum 20.07.2023: 1 Monat und 4 Tage
                                            ...Dauer bis zum 21.07.2023: 1 Monat und 5 Tage
                                            ...Dauer bis zum 22.07.2023: 1 Monat und 6 Tage
                                            ...Dauer bis zum 23.07.2023: 1 Monat und 7 Tage
                                            ...Dauer bis zum 24.07.2023: 1 Monat und 8 Tage
                                            ...Dauer bis zum 25.07.2023: 1 Monat und 9 Tage
                                            ...Dauer bis zum 26.07.2023: 1 Monat und 10 Tage
                                            ...Dauer bis zum 27.07.2023: 1 Monat und 11 Tage
                                            ...Dauer bis zum 28.07.2023: 1 Monat und 12 Tage
                                            ...Dauer bis zum 29.07.2023: 1 Monat und 13 Tage
                                            ...Dauer bis zum 30.07.2023: 1 Monat und 14 Tage
                                            ...Dauer bis zum 31.07.2023: 1 Monat und 15 Tage
                                            ...Dauer bis zum 01.08.2023: 1 Monat und 16 Tage
                                            ...Dauer bis zum 02.08.2023: 1 Monat und 17 Tage
                                            ...Dauer bis zum 03.08.2023: 1 Monat und 18 Tage
                                            ...Dauer bis zum 04.08.2023: 1 Monat und 19 Tage
                                            ...Dauer bis zum 05.08.2023: 1 Monat und 20 Tage
                                            ...Dauer bis zum 06.08.2023: 1 Monat und 21 Tage

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            725
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            10
                                            57
                                            3774
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo