Détermination du numéro de semaine en JavaScript Comme la date('W') de PHP
La fonction date('W') de PHP calcule le numéro de semaine de l'année sur la base des normes ISO-8601. Le numéro de semaine ISO-8601 commence le lundi et se termine le dimanche. Cet article montre comment obtenir des fonctionnalités similaires en JavaScript.
Solution
Le site Web de Merlyn fournit un guide complet pour travailler avec des semaines en JavaScript :
Sur la base de ce guide, l'extrait de code suivant renvoie la semaine ISO-8601 numéro d'une date donnée :
/* For a given date, get the ISO week number * * Based on information at: * * https://www.merlyn.org/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(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate())); // Set to nearest Thursday: current date + 4 - current day number // Make Sunday's day number 7 d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay()||7)); // Get first day of year var yearStart = new Date(Date.UTC(d.getUTCFullYear(),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.getUTCFullYear(), weekNo]; } var result = getWeekNumber(new Date()); console.log('It\'s currently week ' + result[1] + ' of ' + result[0]);
Ce code s'appuie sur les méthodes UTC pour éviter les problèmes liés à l'heure d'été et aux scénarios spécifiques de début d'année. La sortie affiche à la fois l'année en cours et le numéro de la semaine, similaire à la fonction date('W') de PHP.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!