WedX - журнал о программировании и компьютерных науках

Как я могу получить дату прошлой недели, начиная с понедельника по воскресенье в javascript

Мне нужна функция javascript, которая дает мне start_date как дату понедельника на прошлой неделе и end_date как дату воскресенья на прошлой неделе. Так, например, сегодня 09.03.2016, поэтому я хочу start_date = 29.02.2016 end_date = 06.03.2016

до сих пор я написал код как

        function GetLastWeekDate(){
        start_date = new Date();
        start_date.setHours(0,0,0,0);
        end_date = new Date();
        var date=null;
        var curr = date ? new Date(date) : new Date();
        var first = curr.getDate() - curr.getDay("monday"),
             last  = first + 6;

         start_date.setDate( first );
         end_date. setDate( last );
         }


(function() {
     var original = Date.prototype.getDay;
    var daysOfWeek = {
    sunday: 0,
    monday: 1,
    tuesday: 2,
    wednesday: 3,
    thursday: 4,
    friday: 5,
    saturday: 6,
    };

     Date.prototype.getDay = function(weekBegins) {
      weekBegins = (weekBegins || "sunday").toLowerCase();
        return (original.apply(this) + 7 - daysOfWeek[weekBegins]) % 7;
      };
    })();

но это дает мне дату как

    03/07/2016 and 03/13/2016

как мне исправить это, чтобы получить даты, которые я хочу?


  • попробуйте использовать moment.js 09.03.2016

Ответы:


1

Если вам нужно много работать с датами, я настоятельно рекомендую вам использовать библиотеку moment.js.

В этом случае даты будут такими:

var startDate = moment().subtract(1, 'week').startOf('week');
var endDate = moment().subtract(1, 'week').endOf('week');

Здесь вы можете увидеть его в действии:

document.addEventListener('DOMContentLoaded', function() {
  document.getElementById("fromDate").textContent = moment().subtract(1, "week").startOf("week");
  document.getElementById("toDate").textContent = moment().subtract(1, "week").endOf("week");
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.2/moment.min.js"></script>
<html>
  <body>
    <p>From : <span id="fromDate"></span></p>
    <p>To : <span id="toDate"></span></p>
  </body>
</html>

09.03.2016

2

Если вам просто нужно простое решение js без каких-либо внешних библиотек. Вместо этого вы можете попробовать это.

var dateNow = new Date();
var firstDayOfTheWeek = (dateNow.getDate() - dateNow.getDay()) + 1; // Remove + 1 if sunday is first day of the week.
var lastDayOfTheWeek = firstDayOfTheWeek + 6;
var firstDayOfLastWeek = new Date(dateNow.setDate(firstDayOfTheWeek - 7));
var lastDayOfLastWeek = new Date(dateNow.setDate(lastDayOfTheWeek - 7));

В приведенном выше решении firstDataOfLastWeek будет предыдущей неделей в понедельник, а lastDayOfLastWeek будет предыдущей неделей в воскресенье.

20.10.2016
  • добро пожаловать в переполнение стека :-) посмотрите Как ответить. Ваш ответ должен предоставить некоторую информацию, почему предложенный код решает проблему. Я пометил это как низкое качество 20.10.2016
  • firstDayOfLastWeek = воскресенье, 22 марта 2020 г., 19:30:05 GMT-0500 (стандартное время Колумбии) lastDayOfLastWeek = среда, 26 февраля 2020 г., 19:30:05 GMT-0500 (стандартное время Колумбии). 2020 19:33:46 GMT-0500 (стандартное время Колумбии)... Неверно для lastDayOfLastWeek 02.04.2020
  • Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]