Мне нужен самый быстрый способ получить первый день недели. Например: сегодня 11 ноября и четверг; и я хочу первый день этой недели, 8 ноября, и понедельник. Мне нужен самый быстрый метод для функции карты MongoDB, есть идеи?
162
Мне нужен самый быстрый способ получить первый день недели. Например: сегодня 11 ноября и четверг; и я хочу первый день этой недели, 8 ноября, и понедельник. Мне нужен самый быстрый метод для функции карты MongoDB, есть идеи?
Ответы:
Используя
getDay
метод объектов Date, вы можете узнать номер дня недели (0 = воскресенье, 1 = понедельник и т. Д.).Затем вы можете вычесть это количество дней плюс один, например:
источник
diff = d.getDate() - day;
d.setHours(0); d.setMinutes(0); d.setSeconds(0);
Не уверен, как это сравнивается по производительности, но это работает.
Или как функция:
источник
date = new Date(date);
Самое простое решение - поставить в качестве первой строки функцию getMonday.Проверьте Date.js
источник
Date.parse('last monday');
Ответ CMS правильный, но предполагается, что понедельник - первый день недели.
Ответ Чендлера Зволле верен, но возится с прототипом Даты.
Другие ответы, которые играют с часами / минутами / секундами / миллисекундами, неверны.
Приведенная ниже функция является правильной и принимает дату в качестве первого параметра и желаемый первый день недели в качестве второго параметра (0 для воскресенья, 1 для понедельника и т. Д.). Примечание: часы, минуты и секунды установлены в 0, чтобы иметь начало дня.
источник
Это будет хорошо работать.
источник
Я использую это
источник
Эта функция использует текущее время в миллисекундах для вычитания текущей недели, а затем вычитает еще одну неделю, если текущая дата в понедельник (javascript отсчитывает с воскресенья).
Я проверил это, когда неделя переходит от одного месяца к другому (а также лет), и, кажется, работает правильно.
источник
Добрый вечер,
Я предпочитаю просто использовать простой метод расширения:
Вы заметите, что на самом деле используется другой метод расширения, который я использую:
Теперь, если ваши недели начинаются в воскресенье, передайте «0» для параметра pStartOfWeek, например, так:
var mThisSunday = new Date().startOfWeek(0);
Аналогично, если ваши недели начинаются в понедельник, передайте «1» для параметра pStartOfWeek:
var mThisMonday = new Date().startOfWeek(1);
С Уважением,
источник
Воскресенье
Чтобы получить дату первого дня недели с сегодняшнего дня, вы можете использовать что-то вроде этого:
Или получить последний день недели с сегодняшнего дня:
* В зависимости от вашего часового пояса начало недели не обязательно должно начинаться в воскресенье, оно может начинаться в пятницу, субботу, понедельник или в любой другой день, на который настроено ваше устройство. Эти методы будут учитывать это.
* Вы также можете отформатировать его, используя
toISOString
метод так:getLastSunday().toISOString()
источник
setDate () имеет проблемы с границами месяца, которые отмечены в комментариях выше. Простой обходной путь - найти разницу в дате, используя метки времени эпохи, а не (на удивление нелогично) методы объекта Date. Т.е.
источник
Вот мое решение:
Теперь вы можете выбрать дату по возвращенному индексу массива.
источник
Пример только математического расчета, без каких-либо
Date
функций.источник
более обобщенная версия этого ... это даст вам любой день текущей недели в зависимости от того, какой день вы укажете.
источник
Проверьте: moment.js
Пример:
Бонус: работает и с node.js
источник
moment().startOf('week')
moment().startOf("week")
может дать дату предыдущего воскресенья, в зависимости от настроек локали. В этом случае используйтеmoment().startOf('isoWeek')
вместо этого: runkit.com/embed/wdpi4bjwh6rtstartOf()
: momentjs.com/docs/#/manipulation/start-of