2016-07-23 16 views

Antwort

1

Dies sollte Ihnen zu schließen, was Sie wollen, obwohl ich nur Rauch getestet haben und es gibt wahrscheinlich einige weitere Randbedingungen, die gelöst werden müssen.

Ich nahm im Grunde die Iso8601Week des ersten Tages des Monats, und subtrahierte sie von dem des ausgewählten Datums. Das funktioniert wie für die meisten Termine, aber ISO 8601 legt Tage vor dem 4. Januar des Vorjahres, wenn sie vor Donnerstag fallen. Das ist der Grund für das% 52.

Der Code einen Eingang übernimmt Datumtest und ein Label namens label1 genannt:

$('#testDate').datepicker({ 
    onSelect: function(dateText, inst) { 
     var d = new Date(dateText); 
     var d1 = new Date(d.getFullYear(), d.getMonth(), 1) 
     var x = $.datepicker.iso8601Week(d) % 52; 
     var y = $.datepicker.iso8601Week(d1) % 52; 
     $('#label1').text(x-y+1); 
    } 
}); 

ich in ihnen die Variablen mit Teilergebnissen in all links, so dass Sie basteln konnten mit der Werte. In diesem Code wird davon ausgegangen, dass die Woche am Montag beginnt (der ISO 8601-Standard ist) und dass Teilwochen vor Montag Woche 1 sind. Wenn also der Monat an einem Montag beginnt, ist der erste Montag in Woche 1 und der Monat beginnt an jedem anderen Tag, der erste Montag ist in Woche 2. Was komisch aussieht, wenn der 2. des Monats am Montag ist und auch in Woche 2, aber wenn Sie das nicht mögen, müssen Sie etwas ausgeben Zeit entscheiden im Detail, was Sie tun mögen.

+0

Danke, das ist, was ich genau suche. Es funktioniert nach ISO 8601 Standard. Ich habe am Monat Mai 2016 getestet, die 6 Wochen hat und es hat perfekt funktioniert. – user375947

+0

Froh, dass es für dich geklappt hat. Aber wenn ich es vorschlagen würde, würde ich die Wochen im Januar und Dezember ziemlich gründlich testen, wenn Sie es nicht schon getan haben. – BobRodes