Использование 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, которая создает уродливый, грязный код в любой ситуации, которую я видел.
Ответы
Ответ 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)
.