Maison > interface Web > js tutoriel > Comment calculer les numéros de semaine ISO en JavaScript, tout comme la « date('W') » de PHP ?

Comment calculer les numéros de semaine ISO en JavaScript, tout comme la « date('W') » de PHP ?

DDD
Libérer: 2024-12-12 22:48:16
original
682 Les gens l'ont consulté

How to Calculate ISO Week Numbers in JavaScript, Just Like PHP's `date('W')`?

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 :

  • [Travailler avec semaines](https://www.merlyn.org/2005/11/04/working-with-weeks/)

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]);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal