1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

JavaScriptで日付が変わったら処理する

Last updated at Posted at 2020-07-01

改訂

以下に書いてある記事は思いつきで書いたものです、当初は毎日入っているデータに対して曜日を取れば処理できると思っていましたが、色々考えた結果普通にgetDateを使ったほうが同じ手間で簡単でした

前提

arrayにはこういう構造でデータが入っているものとする

const messages = [
  {
    "date": new Date("2020/06/29")
  },
   {
    "date": new Date("2020/06/30")
  },
]

曜日比較コード

dateのgetDay()関数で曜日を示すindexが取れ、それが日付が変わることを示すのでそれを使った判定が楽だと思います。(日を取って比較してもいいがこちらのほうが手間がかからない)

formatにはdayjsを使っていますが気にしないでください


  let day

  messages.forEach((message) => {
    // 次の日になったら日付を出力する
    if (message.date.getDay() !== day) {
      console.log(`\n${dayjs(message.date).format("YYYY/MM/DD")}`)
    }

    day = message.date.getDay()
  });

備考

  • 曜日取得で判定しているので一週間分急にデータがなく過ぎたらバグる

改良版日付比較コード

同じくgetDateで日付のindexが取れるのでこっちのほうが同条件でおおむねバグらない感じでした


  let date

  messages.forEach((message) => {
    // 次の日になったら日付を出力する
    if (message.date.getDate() !== date) {
      console.log(`\n${dayjs(message.date).format("YYYY/MM/DD")}`)
    }

    date = message.date.getDate()
  });

備考

  • 日付の数字しか取れないので、一ヶ月急に過ぎたらバグるが多分現実にあまりないと思うので気にしなくていい
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?