Antworten
Dez 13, 2021 - 12:18
Zu Javascript im NEO Server kann Dir vielleicht jemand anders konkret antworten, ich selber nutzte das persönlich nicht.
Grundsätzlich würde ich persönlich das anders angehen und andere Funktionen nutzten. Bei PHP nutzt man z.B. strtotime, musst Du mal schauen ob das Analog bei Javascript auch so geht.
Ich würde nicht von Weihnachten zurück rechnen, sondern den 26. November als Stichtag nehmen, denn der 1. Sonntag nach dem 26. November ist immer der erste Advent.
In PHP ist pro Datum ein Einzeiler
Grundsätzlich würde ich persönlich das anders angehen und andere Funktionen nutzten. Bei PHP nutzt man z.B. strtotime, musst Du mal schauen ob das Analog bei Javascript auch so geht.
Ich würde nicht von Weihnachten zurück rechnen, sondern den 26. November als Stichtag nehmen, denn der 1. Sonntag nach dem 26. November ist immer der erste Advent.
In PHP ist pro Datum ein Einzeiler
$jahr = date("Y");
echo "1. Advent: ",date("d.m.Y",strtotime("+1 sunday",mktime(0,0,0,11,27,$jahr))), PHP_EOL;
echo "2. Advent: ",date("d.m.Y",strtotime("+2 sunday",mktime(0,0,0,11,27,$jahr))), PHP_EOL;
echo "3. Advent: ",date("d.m.Y",strtotime("+3 sunday",mktime(0,0,0,11,27,$jahr))), PHP_EOL;
echo "4. Advent: ",date("d.m.Y",strtotime("+4 sunday",mktime(0,0,0,11,27,$jahr))), PHP_EOL;
mit mehreren if zu arbeiten macht nicht so viel Sinn. Wenn Du if nutzten willst, brauchst Du danach elseif.
Mehr Sinn, wenn Du das optimieren willst, wäre eine for Schleife, die von 1 -4 durchläuft und innerhalb der Schleife das aktuelle Datum gegen den X Advent prüft. Sobald die Bedingung wahr ist steigt Du dann aus der for Schleife aus.
Dez 13, 2021 - 13:45
Danke Fonzo für deine Tipps, von denen ich einige eigebaut habe. So gefällt es mir jetzt besser.
var i = 0
var today = new Date();
var tempDate = new Date(new Date(today.getFullYear(), 11, 24, 1, 0, 0, 0).getTime());
if (today <= tempDate)
{
while (tempDate.getDay() !== 0)
{
tempDate = new Date(tempDate.getTime() - 24 * 60 * 60 * 1000);
}
for (i = 4; i > 0; i--)
{
if (today >= tempDate)
{
break;
}
tempDate = new Date(tempDate.getTime() - 7 * 24 * 60 * 60 * 1000);
}
}
executeDeviceCommand(
"Alles",
"Advent",
{"value":"setValue","ext":i,"extMeta":"-2147483648-2147483647"},
function(err) {
err && console.error(err.message);
}
);
Neuen Kommentar hinzufügen