2016-03-30 5 views
-1

Ich möchte die Nummer der Woche anzeigen, aber am Mittwoch beginnen. Weißt du wie ich das machen könnte?Wie kann die aktuelle Wochennummer an einem bestimmten Tag in AS3 angezeigt werden?

Beispiel: diese Woche ist 13.

und nächster Mittwoch der Wochennummer 14 sein wird (am Dienstag, wäre es immer noch Woche 13 sein).

Derzeit mein Code ist dies:

function getWeekOfTheYear(d:Date):uint{ 
    var firstDay:Date = new Date(d.getFullYear(), 0, 1); 
    var dayOffset:uint = 9 - firstDay.getDay(); 
    var firstMonday:Date = new Date(d.getFullYear(), 0, (dayOffset > 7) ? dayOffset - 7 : dayOffset); 
    var currentDay:Date = new Date(d.getFullYear(), d.getMonth(), d.getDate()); 
    var weekNumber:uint = (millisecondsToDays(currentDay.getTime() - firstMonday.getTime())/7) + 1; 

    return (weekNumber == 0) ? getWeekOfTheYear(new Date(d.getFullYear() - 1, 11, 31)) : weekNumber; 
    trace("week number is"+weekNumber); 
} 

Aber es ist Funktion, die ich auf Github gefunden habe und berechnen die Anzahl der Woche jeden Montag ...

Thx für Ihre Hilfe,

Antwort

0

Wenn ich richtig verstanden habe, gibt dieser Code die Wochenzahl beginnend am Mittwoch zurück.

function getWeekOfTheYear(d:Date):uint{ 
    var firstDay:Date = new Date(d.getFullYear(), 0, 1); 
    //var dayOffset:uint = 9 - firstDay.getDay(); 
    //var firstMonday:Date = new Date(d.getFullYear(), 0, (dayOffset > 7) ? dayOffset - 7 : dayOffset); 

    var dayOffset2:uint = 11 - firstDay.getDay(); 
    var firstWednesday:Date = new Date(d.getFullYear(), 0, (dayOffset2 > 7) ? dayOffset2 - 7 : dayOffset2); 


    var currentDay:Date = new Date(d.getFullYear(), d.getMonth(), d.getDate()); 
    var weekNumber:uint = (millisecondsToDays(currentDay.getTime() - firstWednesday.getTime())/7) + 1; 

    return (weekNumber == 0) ? getWeekOfTheYear(new Date(d.getFullYear() - 1, 11, 31)) : weekNumber; 
    trace("week number is"+weekNumber); 
} 

Und der folgende Code gibt die Wochenzahl ab dem bestimmten Tag zurück.

static var Sun:int = 0; 
static var Mon:int = 1; 
static var Tue:int = 2; 
static var Wed:int = 3; 
static var Thu:int = 4; 
static var Fri:int = 5; 
static var Sat:int = 6; 
function getWeekOfTheYear(d:Date, startday:int):uint{ 
    var firstDay:Date = new Date(d.getFullYear(), 0, 1); 
    var dayOffset:uint = (7 + startday+ 1) - firstDay.getDay(); 
    var firstSpecificDay:Date = new Date(d.getFullYear(), 0, (dayOffset > 7) ? dayOffset - 7 : dayOffset); 

    var currentDay:Date = new Date(d.getFullYear(), d.getMonth(), d.getDate()); 
    var weekNumber:uint = (millisecondsToDays(currentDay.getTime() - firstSpecificDay.getTime())/7) + 1; 

    return (weekNumber == 0) ? getWeekOfTheYear(new Date(d.getFullYear() - 1, 11, 31), startday) : weekNumber; 
} 

Wie genau

trace(getWeekOfTheYear(new Date("2016/04/05"), Wed)); // Weeknumber starting on Wednesday 
trace(getWeekOfTheYear(new Date("2016/04/06"), Wed)); 
+0

nutzen zu können! Vielen Dank ! – user5870211

Verwandte Themen