Подтвердить что ты не робот

Использование Moment.js для поиска определенного дня текущей недели

Поиск даты определенного дня текущей недели с помощью Moment.js


Существует множество способов манипулирования датами в javascript. Я искал самый простой и простой способ сделать это без длинного уродливого кода, поэтому кто-то показал мне Moment.js.

Я хочу использовать текущую дату, чтобы узнать дату определенного дня текущей недели с этой библиотекой. Моя попытка до сих пор включает в себя разницу между текущим номером дня (дни 0-6) и проверкой того, сколько дней между ним и понедельником (день 1), что совсем не так.

Здесь моя скрипка.

Здесь мой код:

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 monday
//I need to know the date of the current week friday

Как я могу это сделать? Мой метод может быть ужасным способом сделать это, или он может быть несколько близок. Тем не менее, я хочу, чтобы решение было аккуратным, маленьким, динамичным и простым, так как весь код должен быть.

Я бы предпочел не использовать встроенную функцию даты JS, которая создает уродливый, грязный код в любой ситуации, которую я видел.

4b9b3361

Ответ 1

на этой неделе воскресенье

moment().startOf('week')

на этой неделе в понедельник

moment().startOf('isoweek')

на этой неделе суббота

moment().endOf('week')

разница между текущим днем ​​и днем ​​

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

на этой неделе за месяц

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

Ответ 2

Невозможно использовать только строку (например, "isoweek" ), мы должны использовать ее следующим образом:

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

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

Ответ 3

Может быть, немного опоздал на вечеринку, но здесь правильный способ сделать это, как в документации.

moment().day(1); // Monday in the current week

Кроме того, если в вашей локали случается, что неделя начинается с понедельника, и вы хотите получить локально осведомленный результат, вы можете использовать moment().weekday(0). Вот документация для метода weekday(dayNumber).