Javascript: einen Datentyp um eine Funktion erweitern
Aufgabe: eine Datums-Variable nach der Kalenderwoche abfragen.
Hierzu muss der Datentyp Datetime um eine Function erweitert werden
var dt = new Date(col.dataField); var calendarweek = dt.calendarweek(); |
//==< Helper-Functions >== Date.prototype.addDays = function (days) { this.setDate(this.getDate() + parseInt(days)); return this; };
Date.prototype.calendarweek = function () { //------< Date.prototype.calendarweek() >-------- //*extends a date variable by a calendarweek() property
var currentdate = this; //current extend date-variable var january_01 = new Date(currentdate.getFullYear(), 0, 1);
//*calendar days already passed var calendardays = Math.floor((currentdate - january_01) / (24 * 60 * 60 * 1000));
//*week by 7days var calendarweek = Math.ceil((currentdate.getDay() + 1 + calendardays) / 7);
//return current calendarweek return calendarweek;
//------</ Date.prototype.calendarweek() >-------- };
//==</ Helper-Functions >== |
Dann kann man anschliessend eine variable von einem bestimmten Typ wie hier die Datums-variable mit der erweiterten Funktion ansprechen
//------< Week >------ //*dt.toLocaleDateString() ist immer 8/19/2020 col.width = 80; col.cssClass = "colWeek"; col.alignment = "center";
//*get current calendarweek in the year var calendarweek = dt.calendarweek(); col.caption = calendarweek //if (culture.startsWith("de")) { // col.caption = "KW " + calendarweek + " " + dt.toLocaleDateString("de", { month: "2-digit", day: "2-digit" }) + ""; //} //else { // col.caption = "CW " + calendarweek + " " + dt.toLocaleDateString("en") + ""; //} //< Col.PastOrFuture > var today = new Date(); var lastweekday = new Date().addDays(-30); if (dt < lastweekday) { col.cssClass = "colWeekLongPast"; } else if (dt < today) { col.cssClass = "colWeekPast"; } else { col.cssClass = "colWeekFuture"; } //</ Col.PastOrFuture >
//------</ Week >------ |