28

特定の日付を指定して前の月曜日を取得するのに少し問題があるようです。タスクに Moment js を使用しようとしています。明らかに、私は手動でそれを行うことができますが、彼らのウェブサイトの moment.js ドキュメントの例を使用して動作させることができなかったのは不思議でした: http://momentjs.com/docs/#/get-set /日/ .

私は次のようなことを試みていました:

moment([2013, 08, 15, 15, 20]).day(-1).format('ddd, MMM DD')

その結果、「2 日前」の日付になり、予想される 9 月 9 日ではなく 9 月 13 日になります。

ここで手がかりを持っている人はいますか?ありがとう。

4

4 に答える 4

62

仕組みは次のとおりです。

moment().day(1) // this monday
moment().day(-6) // last monday, think of it as this monday - 7 days = 1 - 7 = -6

同じことが他の方向にも当てはまります。

moment().day(8) // next monday, or this monday + 7 days = 1 + 7 = 8

コードmoment().day(-1)は、今週の日曜日 - 1 日 = 0 - 1 = -1 または今週の土曜日 - 7 日 = 6 - 7 = -1 として説明できます。

于 2013-09-30T17:52:28.050 に答える
2
function nextWeekday (day, weekday) {
  const current = day.day()
  const days = (7 + weekday - current) % 7
  return day.clone().add(days, 'd')
}

// example: get next Friday starting from 7 Oct 2019

nextWeekday(moment('2019-10-07'), 5)) // 2019-10-11
于 2019-10-13T12:22:22.893 に答える