Comment puis-je obtenir le numéro de semaine en cours de l'année, comme%% date('W')
PHP?
Il devrait s'agir du nombre de semaines ISO-8601 , les semaines commençant le lundi.
Comment puis-je obtenir le numéro de semaine en cours de l'année, comme%% date('W')
PHP?
Il devrait s'agir du nombre de semaines ISO-8601 , les semaines commençant le lundi.
Vous devriez être en mesure d'obtenir ce que vous voulez ici:http://www.merlyn.demon.co.uk/js-date6.htm#YWD
Un meilleur lien sur le même site est: Travailler avec des semaines http://www.merlyn.demon.co.uk/js-date7.htm
Voici un code basé sur les liens fournis et qui a posté plus tôt par Dommer. Il a été légèrement testé contre les résultats à http://www.merlyn.demon.co.uk/js-date6.htm#YWD. S'il vous plaît tester à fond, pas de garantie.
/* For a given date, get the ISO week number
*
* Based on information at:
*
* http://www.merlyn.demon.co.uk/weekcalc.htm#WNR
*
* Algorithm is to find nearest thursday, it's year
* is the year of the week number. Then get weeks
* between that date and the first day of that year.
*
* Note that dates in one year can be weeks of previous
* or next year, overlap is up to 3 days.
*
* e.g. 2014/12/29 is Monday in week 1 of 2015
* 2012/1/1 is Sunday in week 52 of 2011
*/
function getWeekNumber(d) {
// Copy date so don't modify original
d = new Date(+d);
d.setHours(0,0,0);
// Set to nearest Thursday: current date + 4 - current day number
// Make Sunday's day number 7
d.setDate(d.getDate() + 4 - (d.getDay()||7));
// Get first day of year
var yearStart = new Date(d.getFullYear(),0,1);
// Calculate full weeks to nearest Thursday
var weekNo = Math.ceil(( ( (d - yearStart) / 86400000) + 1)/7)
// Return array of year and week number
return [d.getFullYear(), weekNo];
}
Notez que les heures doivent être remis à zéro dans le cas d'un objet date est passé avec une heure de retard.
Réduite, version prototype (renvoie uniquement à la semaine):
Date.prototype.getWeekNumber = function(){
var d = new Date(+this);
d.setHours(0,0,0);
d.setDate(d.getDate()+4-(d.getDay()||7));
return Math.ceil((((d-new Date(d.getFullYear(),0,1))/8.64e7)+1)/7);
};
En accord avec http://javascript.about.com/library/blweekyear.htm
Date.prototype.getWeek = function() {
var onejan = new Date(this.getFullYear(),0,1);
return Math.ceil((((this - onejan) / 86400000) + onejan.getDay()+1)/7);
}
La bibliothèque Date.format()
Jacob Wright implémente le formatage de la date dans le style de la fonction date()
de PHP et prend en charge le numéro de semaine ISO-8601:
new Date().format('W');
C'est peut-être un peu excessif pour un numéro de semaine seulement, mais il prend en charge le formatage de style PHP et est très pratique si vous en faites beaucoup.
J'ai trouvé utile la classe SimpleDateFormat de Java SE décrite dans les spécifications d'Oracle: http://goo.gl/7MbCh5 . Dans mon cas, dans Google Apps Script, cela fonctionnait comme suit:
function getWeekNumber() {
var weekNum = parseInt(Utilities.formatDate(new Date(), "GMT", "w"));
Logger.log(weekNum);
}
Par exemple, dans une macro de feuille de calcul, vous pouvez récupérer le fuseau horaire réel du fichier:
function getWeekNumber() {
var weekNum = parseInt(Utilities.formatDate(new Date(), SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone(), "w"));
Logger.log(weekNum);
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.