javascript - 日付を比較すると予期しない結果が得られますか?

okwaves2024-01-25  8

本当に単純な質問です。これら 2 つの日付は異なりますか:

2020-09-02T00:00:00.000+00:00 および 2020-09-02T15:39:00+04:00

つまり、それらを比較すると、true または false が得られるということです。 バックエンド (MongoDB) から取得している日付は 2020-09-02T00:00:00.000+00:00 で、リクエスト本文で渡している日付は 2020-09-02T15:39:00+04:00 です。比較すると、得られる結果は false になります。

同じでない場合、この日付 2020-09-02T15:39:00+04:00 を DB 形式に変換するにはどうすればよいですか。時間ではなく日付だけを確認したいのです。ティア

「moment("2017-10-09T00:00:00Z").isSameOrAfter(moment("2017-10-09 22:00:00+00:00").utc().startOf のようなもの('day')、'day');` 日付だけを比較したい場合でも、タイムゾーンは重要です

– 内向的

2020 年 9 月 3 日 12:37



------------------------

文字列を Date オブジェクトに解析し、dateString を比較できます。 toDateString は、Date オブジェクトの日付部分を読み取り可能な文字列として返します。

const date1 = new Date("2020-09-02T00:00:00.000+00:00");
const date2 = new Date("2020-09-02T15:39:00+04:00");

function compareDates(date1, date2) {
  return date1.toDateString() === date2.toDateString();
}

compareDates(date1, date2); //true

ただし、異なるタイムゾーンを処理しているため、他のタイムゾーンを使用することをお勧めします

const date1 = new Date("2020-09-02T00:00:00.000+00:00");
const date2 = new Date("2020-09-02T15:39:00+04:00");

function compareDates(date1, date2) {
  return date1.getUTCFullYear() === date2.getUTCFullYear() &&
         date1.getUTCMonth() === date2.getUTCMonth() &&
         date1.getUTCDate() === date2.getUTCDate();
}

compareDates(date1, date2); //true

getUTC... メソッドは、世界時に従って年、月、または日を返します。

1

日付だけのタイムゾーンを確認したくないのですが、提案された最初の方法で十分でしょうか?

– エマ

2020 年 9 月 3 日 12:10

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。