NEWS
KW aus Datum in einer Schleife möglich?
-
Kann ich in einer Schleife aus einem Datum die Kalenderwoche dieses Datums ausgeben?
Per neuem Block "getHistory" bekomme ich den Zeitstempel, möchte das aber als KW ausgeben.
Hat hier zufällig jemand ein Beispielblockly für mich? -
Anbei Ermittlung per js:
// Woche ermitteln var date = new Date(); var currentThursday = new Date(date.getTime() +(3-((date.getDay()+6) % 7)) * 86400000); var yearOfThursday = currentThursday.getFullYear(); var firstThursday = new Date(new Date(yearOfThursday,0,4).getTime() +(3-((new Date(yearOfThursday,0,4).getDay()+6) % 7)) * 86400000); var weekNumber = Math.floor(1 + 0.5 + (currentThursday.getTime() - firstThursday.getTime()) / 86400000/7); log(weekNumber);
Blockly mach ich nicht.
-
@rtwl sagte in KW aus Datum in einer Schleife möglich?:
bekomme ich den Zeitstempel, möchte das aber als KW ausgeben.
Ist ein schöner Feature-Request für den JavaScript-Adapter. Nehme ich mal mit auf.
-
@haus-automatisierung sagte in KW aus Datum in einer Schleife möglich?:
Nehme ich mal mit auf.
Super Danke
-
Vielleicht kannst du mir trotzdem helfen.
ich habe diesen Code um aus dem aktuellen Datum die KW zu ermitteln.var currentDate = ts; currentDate.setHours(0, 0, 0, 0); var dayOfWeek = currentDate.getDay(); currentDate.setDate(currentDate.getDate() - dayOfWeek + (dayOfWeek === 0 ? -6 : 1)); var yearStart = new Date(currentDate.getFullYear(), 0, 1); var weekNumber = Math.ceil((((currentDate - yearStart) / 86400000) + 1) / 7); return weekNumber;
die Variable
currentDate
wird auf die Blockly-Variablets
gesetzt. In dieser ist der Timestamp aus dem History Adapter enthalten.Doch im Log steht dann folgendes:
TypeError: currentDate.setHours is not a function
Kannst du den Fehler finden?
-
@rtwl
Warum nimmst du nicht mein Script?
Komisch.
Habe es extra raus gesucht um es dir mitzuteilen.Musst du halt einmal vergleichen.
-
Hab es mit deinem Skript auch probiert. Geht nicht. Ich meine es geht schon, um die aktuelle KW zu bekommen.
Ich bräuchte aber die KW aus dem Timestamp und dieser ist in Millisekunden anstelle des Datum-Format.Bräuchte daher ein Skript wie man ein Timestamp in ein Datums-Format umwandelt, damit das Skript funktioniert.
-
@rtwl sagte in KW aus Datum in einer Schleife möglich?:
die Variable currentDate wird auf die Blockly-Variable ts gesetzt.
Weil
ts
ein Timestamp ist. Also numerisch. Du bräuchtest quasivar currentDate = new Date(ts);
Aber das Script von @bahnuhr ist eh schöner (auf den ersten Blick)
-
@haus-automatisierung
gut, ich werde @bahnuhr ´s Skript nehmen.
bei deinem Vorschlag kommt dannReferenceError: newDate is not defined
Mein Testaufbau sieht so aus:
var currentDate = newDate(ts); return currentDate;
-
@rtwl aaaaah - Leertaste vergessen
Danke, funktioniert