Comment obtenir le numéro de semaine actuel de l'année, comme celui de PHP date('W')
?
Ce devrait être le numéro de semaine ISO-8601 de l'année, les semaines commençant le lundi.
javascript
date
PeeHaa
la source
la source
Réponses:
Vous devriez pouvoir 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.Éditer
Voici un code basé sur les liens fournis et celui publié par Dommer. Il a été légèrement testé par rapport aux résultats sur
http://www.merlyn.demon.co.uk/js-date6.htm#YWD. Veuillez tester soigneusement, aucune garantie fournie.Modifier 2017
Il y avait un problème avec les dates pendant la période pendant laquelle l'heure d'été a été observée et les années où le 1er janvier était le vendredi. Corrigé en utilisant toutes les méthodes UTC. Ce qui suit renvoie des résultats identiques à Moment.js.
Les heures sont remises à zéro lors de la création de la date "UTC".
Version prototype réduite (renvoie uniquement le numéro de la semaine):
Section de test
Dans cette section, vous pouvez saisir n'importe quelle date au format AAAA-MM-JJ et vérifier que ce code donne le même numéro de semaine que le numéro de semaine ISO Moment.js (testé sur 50 ans de 2000 à 2050).
la source
d.setMilliseconds(0)
des numéros de semaine différents pour la même date selon que j'utilisais la nouvelle date () ou la nouvelle date ("1/4/2016"). Juste un avertissement pour les autres qui pourraient vivre la même chose.Vous pouvez également utiliser la bibliothèque momentjs:
moment().format('W')
la source
moment().week()
Comme dit ci-dessus mais sans classe:
la source
(now.getTime() - onejan.getTime())
pour éviter les problèmes de build.Accordily http://javascript.about.com/library/blweekyear.htm
la source
La
Date.format()
bibliothèque de Jacob Wright implémente le formatage de la date dans le style de ladate()
fonction PHP et prend en charge le numéro de semaine ISO-8601:Cela peut être un peu exagéré pour une semaine seulement, mais il prend en charge le formatage de style PHP et est assez pratique si vous faites beaucoup de cela.
la source
Le code suivant est indépendant du fuseau horaire (dates UTC utilisées) et fonctionne selon https://en.wikipedia.org/wiki/ISO_8601
la source
J'ai trouvé utile la classe SimpleDateFormat de Java SE décrite dans la spécification d'Oracle: http://goo.gl/7MbCh5 . Dans mon cas, dans Google Apps Script, cela fonctionnait comme ceci:
Par exemple, dans une macro de feuille de calcul, vous pouvez récupérer le fuseau horaire réel du fichier:
la source
Cela ajoute la méthode "getWeek" à Date.prototype qui renvoie le nombre de semaines depuis le début de l'année. L'argument définit quel jour de la semaine considérer le premier. Si aucun argument n'est passé, le premier jour est supposé dimanche.
la source
new Date(Date.UTC(2018,11, 31)).getWeek(1)+1
(le lundi est le 1er jour de la semaine en Allemagne).Obtenez le numéro de semaine d'une date donnée
Exemple
la source
I need the week to begin on a Sunday
; Je pense que le seul changement nécessaire est dans la fonction jour de la semaine ().getDay()+1
à changer en.getDay()
Le code ci-dessous calcule le numéro de semaine ISO 8601 correct. Il correspond à PHP
date("W")
pour chaque semaine entre le 1/1/1970 et 1/1/2100.Source: Taco van den Broek
Si vous n'aimez pas étendre les prototypes, voici une fonction:
Exemple d'utilisation:
la source
+6 ) % 7
pièce. Merci d'un gommage!getDay()
commence un dimanche, donc si vous voulez qu'elle commence le dimanche, vous pouvez supprimer la correction:var nDay = date.getDay();
Si vous êtes déjà dans un projet Angular, vous pouvez utiliser
$filter('date')
.Par exemple:
la source
L'extrait de code qui fonctionne plutôt bien pour moi est celui-ci:
Remarque:
d
est ma date pour laquelle je veux le numéro de la semaine en cours.Le
+
convertit les dates en nombres (en utilisant TypeScript).la source
Voici mon implémentation pour calculer le numéro de semaine en JavaScript. corrigé pour les décalages d'heure d'été et d'hiver également. J'ai utilisé la définition de la semaine de cet article: ISO 8601
Les semaines vont du lundi au dimanche et le 4 janvier est toujours la première semaine de l'année.
pour tester j'ai utilisé les tests JavaScript suivants dans Qunit
la source
Cette semaine, le numéro a été une vraie douleur dans le a **. La plupart des scripts sur le net ne fonctionnaient pas pour moi. Ils ont travaillé la plupart du temps, mais tous ont cassé à un moment donné, surtout lorsque l'année a changé et que la dernière semaine de l'année était soudainement la première semaine de l'année prochaine, etc. semaine 53).
Remarque: les exemples sont conçus pour fonctionner avec les semaines européennes (le lundi en premier)!
getWeek ()
setDay ()
getDayIndex ()
J'ai testé cela et cela semble fonctionner très bien, mais si vous remarquez une faille, faites-le moi savoir.
la source
J'ai beaucoup essayé d'obtenir le code le plus court pour obtenir le numéro de semaine conforme ISO.
La variable
date
est nécessaire pour éviter d'altérer l'originalthis
. J'ai utilisé les valeurs de retour desetDate()
etsetMonth()
pour me passer degetTime()
pour économiser la longueur du code et j'ai utilisé un nombre expontial pendant des millisecondes d'un jour au lieu d'une multiplication d'éléments simples ou d'un nombre avec cinq zéros.this
est la date ou le nombre de millisecondes, la valeur de retour estString
par exemple «49/2017».la source
Avec Luxon ( https://github.com/moment/luxon ):
la source
Une autre option basée sur la bibliothèque: utilisez
d3-time-format
:la source
Solution de contournement la plus courte pour Angular2 + DatePipe, ajustée pour ISO-8601:
la source
la source