Получить тот же день той же недели - PullRequest
0 голосов
/ 09 марта 2020

Я использую момент JS и хотел бы получить тот же день той же недели в прошлом году.

У нас третья неделя месяца, понедельник. Третья неделя, потому что первая неделя началась в воскресенье 01/03/2020. И на этой неделе у нас был только один день в месячном сопоставлении.

Я хочу получить третью неделю, понедельник прошлого года.

Я пытался сделать это, но он возвращает 04/03/2019 вместо 11/03/2019. Любая идея, как я могу это исправить? А также, почему мой код имеет такое поведение?

console.log(moment().subtract(1, 'years').day(moment().day()).format('DD/MM/YYYY'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js" integrity="sha256-4iQZ6BVL4qNKlQ27TExEhBN1HFPvAvAMbFavKKosSWQ=" crossorigin="anonymous"></script>

Ответы [ 2 ]

2 голосов
/ 09 марта 2020

Сначала вы должны найти, какой день года равен , затем вычесть год и добавить дни назад в:

const currentDay = moment().dayOfYear()
const thisDayLastYear = moment()
  .subtract(1, 'year')     // go back one year
  .startOf('year')         // start at the beginning
  .add(currentDay, 'days') // add the days back in
  .format('DD/MM/YYYY')

console.log(thisDayLastYear)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js" integrity="sha256-4iQZ6BVL4qNKlQ27TExEhBN1HFPvAvAMbFavKKosSWQ=" crossorigin="anonymous"></script>
2 голосов
/ 09 марта 2020

вы используете год в вычитании, используйте 52 недели вместо:

Редактировать:

console.log(moment().subtract(52, 'weeks').format('DD/MM/YYYY'));

вы можете попробовать его с разными датами, такими как:

moment("20200311","YYYYMMDD").subtract(52, 'weeks').format('DD/MM/YYYY'); 
...