# Anzahl der Tage pro Monat in eine Variable ausgeben, inkl. Berücksichtigung von Schaltjahren

**URL:** <https://community.homey.app/t/anzahl-der-tage-pro-monat-in-eine-variable-ausgeben-inkl-berucksichtigung-von-schaltjahren/72817>\
**Category:** Fragen & Hilfe\
**Created:** [November 29, 2022, 12:10pm UTC](https://community.homey.app/t/anzahl-der-tage-pro-monat-in-eine-variable-ausgeben-inkl-berucksichtigung-von-schaltjahren/72817 "2022-11-29T12:10:59Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![DirkG](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/dirkg/32/118897_2.png) [@DirkG](https://community.homey.app/u/DirkG)\
**Post date:** [November 29, 2022, 12:10pm UTC](https://community.homey.app/t/anzahl-der-tage-pro-monat-in-eine-variable-ausgeben-inkl-berucksichtigung-von-schaltjahren/72817/1 "2022-11-29T12:10:59Z")

</div>

Am Anfang eines neuen Jahres sowie eines Monats möchte ich gerne die Anzahl der Tage in jeweils eine separate Variable speichern, eine für das Jahr, eine für den Monat.

Ein möglicher Flow für die Tage/Monat könnte z.B. wie folgt aussehen, allerdings ist der Februar noch nicht berücksichtigt:

 ![image](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/c/f/cfdb08822c0102a32917ec21bc1a8ca157925aff.png)

Und fürs Jahr, inklusive Berücksichtigung von Schaltjahren, z.B. so:

 ![image](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/0/9/09c2624ce3d72d78aa3f90ea2d50fd73882c361a.png)

Theoretisch könnte ich das Ergebnis aus der Jahresberechnung mit in den Monats-Flow einbeziehen und so die Tagesanzahl für den Februar korrekt setzen lassen, aber geht das Ganze nicht irgendwie einfacher?

Für die Ermittlung eines Schaltjahres gibt es übrigens Regeln. Allerdings wüsste ich nicht, wie ich diese Regeln in einem Flow (Berechnung einer Variable) umsetzen könnte:

- Ist die Jahreszahl durch vier teilbar, aber nicht durch 100, ist es ein Schaltjahr.
- Ist die Jahreszahl durch 100 teilbar, aber nicht durch 400, ist es kein Schaltjahr.
- Ist die Jahreszahl durch 400 teilbar, dann ist es ein Schaltjahr.

Hat jemand eine Idee wie man das insgesamt vereinfachen kann? Evtl. mit einem Homey Script? Leider kann ich selber kein Script programmieren… 🤭

---

<div class="post-metadata">

**Author:** ![spkesDE](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/spkesde/32/54352_2.png) [@spkesDE](https://community.homey.app/u/spkesDE)\
**Post date:** [November 29, 2022, 1:05pm UTC](https://community.homey.app/t/anzahl-der-tage-pro-monat-in-eine-variable-ausgeben-inkl-berucksichtigung-von-schaltjahren/72817/2 "2022-11-29T13:05:16Z")

</div>

Hab leider keim Homey zum testen aber sollte so klappen:

```auto
let date = new Date(); //Akutelles Datum für Jahr/Monat
return new Date(date.getFullYear(), date.getMonth(), 0).getDate(); //Gib die Tage des Monats zurück

```

Schaltjahr

```auto
let date = new Date(); //Akutelles Datum für Jahr

//Der %-Operator gibt den Rest von zwei Zahlen zurück. Damit können wir dann Schaltjahre berechnen
return date.getFullYear() % 400 === 0 || (date.getFullYear() % 100 !== 0 && date.getFullYear() % 4 === 0) ? 366 : 365;

```

---

<div class="post-metadata">

**Author:** ![DirkG](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/dirkg/32/118897_2.png) [@DirkG](https://community.homey.app/u/DirkG)\
**Post date:** [November 29, 2022, 2:19pm UTC](https://community.homey.app/t/anzahl-der-tage-pro-monat-in-eine-variable-ausgeben-inkl-berucksichtigung-von-schaltjahren/72817/3 "2022-11-29T14:19:58Z")

</div>

Erst mal vielen Dank!

Das erste Script für die Tage gibt **31** zurück, was ja falsch ist.

Das zweite Script für das Schaltjahr gibt **365** zurück, was, zumindest in den aktuellen Jahr, korrekt ist.

Abgesehen von dem Fehler im ersten Script, wie übergebe ich die Werte in eine Variable?  
Habe das folgende Script in den Beispielen gefunden:

```auto
/*
 * This script sets a global variable.
 */

global.set('myHomeyScriptVariable', 'Some Value');

```

Wenn meine Variable für die Anzahl der Tage im Monat **TageMonat** heißt, wie müsste das Script dann ergänzt werden?  
Habe schon rumprobiert, aber ohne Erfolg.

---

<div class="post-metadata">

**Author:** ![spkesDE](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/spkesde/32/54352_2.png) [@spkesDE](https://community.homey.app/u/spkesDE)\
**Post date:** [November 29, 2022, 3:01pm UTC](https://community.homey.app/t/anzahl-der-tage-pro-monat-in-eine-variable-ausgeben-inkl-berucksichtigung-von-schaltjahren/72817/4 "2022-11-29T15:01:25Z")

</div>

> [@DirkG](#):
>
> Das erste Script für die Tage gibt **31** zurück, was ja falsch ist.

Fehler behoben. Die Monate beginnen bei 0 und nicht bei 1 😃 Sollte nun richtig sein.

```auto
let date = new Date(); //Akutelles Datum für Jahr/Monat
return new Date(date.getFullYear(), date.getMonth()-1, 0).getDate(); //Gib die Tage des Monats zurück

```

> [@DirkG](#):
>
> Abgesehen von dem Fehler im ersten Script, wie übergebe ich die Werte in eine Variable?  
> Habe das folgende Script in den Beispielen gefunden:

Entweder mit der Homey-Script Karte die ein Token wieder gibt und dann kannst du alles machen oder direkt via Homey script. Da weiß ich aber aktuell nicht wie man dort eine Variable neu setzt.

Eventuell klappt das so.

```auto
let date = new Date(); //Akutelles Datum für Jahr/Monat
global.set('TageMonat', new Date(date.getFullYear(), date.getMonth()-1, 0).getDate());

```

```auto
let date = new Date(); //Akutelles Datum für Jahr

//Der %-Operator gibt den Rest von zwei Zahlen zurück. Damit können wir dann Schaltjahre berechnen
global.set('TageJahr', date.getFullYear() % 400 === 0 || (date.getFullYear() % 100 !== 0 && date.getFullYear() % 4 === 0) ? 366 : 365);

```

---

<div class="post-metadata">

**Author:** ![DirkG](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/dirkg/32/118897_2.png) [@DirkG](https://community.homey.app/u/DirkG)\
**Post date:** [November 29, 2022, 3:22pm UTC](https://community.homey.app/t/anzahl-der-tage-pro-monat-in-eine-variable-ausgeben-inkl-berucksichtigung-von-schaltjahren/72817/5 "2022-11-29T15:22:57Z")

</div>

> [@spkesDE](#):
>
> Sollte nun richtig sein.

👍🏼

Nur mit dem reinenHomey-Script hat’s leider nicht funktioniert, aber wie vorgeschlagen auf diesem Weg, und das würde mir reichen.

 ![image](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/2/9/29eb1db3297359b6c69c124f69e47e67098d02ac.png)

Was bedeutet denn dieses **MyArg**? Ist schon klar “Mein Argument”. Aber was ist ein “Argument” und muss dort was Anderes eingetragen werden? Wenn ja, was?

---

<div class="post-metadata">

**Author:** ![spkesDE](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/spkesde/32/54352_2.png) [@spkesDE](https://community.homey.app/u/spkesDE)\
**Post date:** [November 29, 2022, 3:26pm UTC](https://community.homey.app/t/anzahl-der-tage-pro-monat-in-eine-variable-ausgeben-inkl-berucksichtigung-von-schaltjahren/72817/6 "2022-11-29T15:26:03Z")

</div>

> [@DirkG](#):
>
> Was bedeutet denn dieses **MyArg**? Ist schon klar “Mein Argument”. Aber was ist ein “Argument” und muss dort was Anderes eingetragen werden? Wenn ja, was?

Du könntest Argumente einreichen z.b. Tokens oder Globale Tokens etc… Dann kannst du damit im Homey Script arbeiten. Es gibt diese Karte auch ohne Argumente. Bei meinen Script braucht man jetzt keine Argumente.

> [@DirkG](#):
>
> Nur mit dem reinenHomey-Script hat’s leider nicht funktioniert, aber wie vorgeschlagen auf diesem Weg, und das würde mir reichen.

Sobald ich mein Homey hab, kann ich schauen wie ich das hinbekomme mit den Globalen Variablen. (🤞 das im Dezember die neuen Homey schon ausgeliefert werden)

---

<div class="post-metadata">

**Author:** ![Jarek\_J](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/jarek_j/32/48716_2.png) [@Jarek\_J](https://community.homey.app/u/Jarek_J)\
**Post date:** [November 29, 2022, 7:24pm UTC](https://community.homey.app/t/anzahl-der-tage-pro-monat-in-eine-variable-ausgeben-inkl-berucksichtigung-von-schaltjahren/72817/7 "2022-11-29T19:24:57Z")

</div>

Damit kannst du dem Script ein Array an Argumenten (ähnlich einer vorbelegten Array Variable) mitliefern, die dann im Script Wiederverwendung finden können.

Ich hab z.B. ein kleines Script, das je nach mitgeliefertem Argument alle meine Geräte die “Weihnacht” im Namen haben an oder ausschaltet.  
Ich muss nur zusehen, dass jegliche Weihnachtsbeleuchtung “Weihnacht” im Namen enthält.

Dazu gebe ich in MyArg den string an oder aus mit und das Script macht alles andere eigenständig.

---

<div class="post-metadata">

**Author:** ![Mike1233](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/mike1233/32/20991_2.png) [@Mike1233](https://community.homey.app/u/Mike1233)\
**Post date:** [November 29, 2022, 10:28pm UTC](https://community.homey.app/t/anzahl-der-tage-pro-monat-in-eine-variable-ausgeben-inkl-berucksichtigung-von-schaltjahren/72817/8 "2022-11-29T22:28:09Z")

</div>

Kennen Sie auch diese App? Ist leider (noch) nicht mit dem neuen Homey 2023 kompatibel.  
Eine Karte für das Schaltjahr ist verfügbar.  
Vielleicht können Sie damit etwas anfangen?

[https://homey.app/nl-nl/app/com.cyclone-software.holidays/Vrije-dagen/](https://homey.app/nl-nl/app/com.cyclone-software.holidays/Vrije-dagen/)

---

<div class="post-metadata">

**Author:** ![DirkG](https://sea1.discourse-cdn.com/flex025/user_avatar/community.homey.app/dirkg/32/118897_2.png) [@DirkG](https://community.homey.app/u/DirkG)\
**Post date:** [November 30, 2022, 10:32am UTC](https://community.homey.app/t/anzahl-der-tage-pro-monat-in-eine-variable-ausgeben-inkl-berucksichtigung-von-schaltjahren/72817/9 "2022-11-30T10:32:32Z")

</div>

@spkesDE und @Jarek_J, vielen Dank für Eure Erklärungen. @RonnyW hatte auch schon mal versucht mir in diesem Zusammenhang was zu erklären, aber ich verstehe es einfach nicht, sorry. 😔

@Mike1233, vielen Dank für den Hinweis, wusste ich noch nicht. Aber extra eine zusätzliche App nur für das Schaltjahr?  
Aber du hast mich auf eine Idee gebracht. Für die Feiertage und Schulferien in Deutschland nutze ich bereits die App [IcalCalender](https://homey.app/de-de/app/no.runely.calendar/IcalCalender/) mit entsprechenden Kalender-Abos oder iCal Dateien. Bevor ich diesen Thread erstellt hatte, hatte ich bereits nach einem fertigen Kalender gesucht der die Schaltjahre und Tage/Monat beinhaltet, habe aber nichts gefunden.  
Da ich für Homey aber auch eigene Kalender nutze, habe ich jetzt in einem dieser Kalender einen Termin zum 01.01.2024 (das ist das nächste Schaltjahr) eingetragen, welcher sich automatisch alle 4 Jahre wiederholt. Da diese eine Ausnahmeregelung `Ist die Jahreszahl durch 100 teilbar, aber nicht durch 400, ist es kein Schaltjahr.` erst 2100 zutrifft, spielt diese keine Rolle.

So sieht dann der Flow für die Anzahl der Tage/Jahr aus:

 ![image](https://us1.discourse-cdn.com/flex025/uploads/athom/original/3X/4/e/4ee866b3a691e0abe926771730ed2ad1fd08cd8d.png)

@spkesDE, hoffe bist nicht sauer, dass ich jetzt diesen Flow und nicht Dein Script nutze… 🙈  
Falls etwas nicht funktionieren sollte, könnte ich bei diesem Flow selber etwas korrigieren. Beim Script wäre ich wieder auf fremde Hilfe angewiesen. Das Script Tage/Monat werde ich aber nutzen, vielen Dank dafür! 👍🏼
