web-dev-qa-db-fra.com

Utilisation de Moment.js pour rechercher un jour spécifique de la date de la semaine en cours

Trouver la date d'un jour spécifique de la semaine en cours avec Moment.js


Il y a beaucoup de façons de manipuler les dates en javascript. Je cherchais le moyen le plus simple et le plus facile de le faire sans un code long et laid. Quelqu'un m'a alors montré Moment.js

Je souhaite utiliser la date du jour pour découvrir la date d'un jour spécifique de la semaine en cours avec cette bibliothèque. Ma tentative jusqu'ici consiste à prendre la différence entre le nombre de jours en cours (jours 0 à 6) et à vérifier combien de jours se trouvent entre celui-ci et le lundi (jour 1), ce qui n’est pas correct du tout.

Voici mon violon.

Voici mon code:

var now = moment();

var day = now.day();

var week = [['sunday',0],['monday',1],['tuesday',2],['wednesday',3],['thursday',4],['friday',5],['saturday',6]];

var monday = moment().day(-(week[1][1] - day));//today minus the difference between monday and today

$("#console").text(monday);

//I need to know the date of the current week's monday
//I need to know the date of the current week's friday

Comment puis-je faire ceci? Ma méthode peut être un moyen terrible de le faire ou un peu proche. Je souhaite cependant que la solution soit nette, petite, dynamique et simple, comme tout le code devrait l'être. 

Je préférerais ne pas utiliser la fonctionnalité de date JS native qui produit un code laid et désordonné dans toutes les situations que j'ai vues.

27
user2700923

dimanche de cette semaine

moment().startOf('week')

le lundi de cette semaine

moment().startOf('isoweek')

samedi de cette semaine

moment().endOf('week')

différence entre le jour actuel et le dimanche

moment().diff(moment().startOf('week'),'days')

le mercredi de cette semaine

moment().startOf('week').add('days', 3)
57
wayne

Il n'est plus possible d'utiliser simplement une chaîne (par exemple, 'isoweek'), nous devons l'utiliser comme ceci:

import * as moment from 'moment';
import { unitOfTime } from 'moment';

moment().startOf('isoweek' as unitOfTime.StartOf);
0
IngoB