JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで時刻を無視して日付のみを比較する方法

JavaScriptでDateオブジェクト同士を比較すると、通常は日付だけでなく時刻(時・分・秒・ミリ秒)も含めて評価されます。そのため、「同じ日かどうか」だけを判定したい場合は、あらかじめ時刻の部分を揃えておく必要があります。

最もシンプルな方法は、setHours()メソッドを使って時刻を「00:00:00.000」にリセットすることです。これにより、両方の日付の時刻部分が統一され、日付部分だけを正確に比較できるようになります。

setHours(0, 0, 0, 0) の基本

setHours()メソッドは、時・分・秒・ミリ秒の4つの引数を受け取ります。すべてに0を指定すると、その日の午前0時ちょうどに設定され、時刻情報が実質的に無効化されます。

date1.setHours(0, 0, 0, 0); // 時刻を午前0時にリセット

サンプルコード

<!DOCTYPE html>
<html>
   <body>
      <script>
         var date1, date2;
         date1 = new Date();
         date1.setHours(0,0,0,0);
         document.write(date1);
         date2 = new Date("Jan 01, 2018");
         document.write("<br>" + date2);
         if (date1.getTime() === date2.getTime()) {
            document.write("<br>両方の日付は等しいです。");
         } else {
            document.write("<br>両方の日付は等しくありません。");
         }
      </script>
   </body>
</html>

実行結果

Fri May 25 2018 00:00:00 GMT+0530 (India Standard Time)
Mon Jan 01 2018 00:00:00 GMT+0530 (India Standard Time)
両方の日付は等しくありません。

コードのポイント

  • date1.setHours(0,0,0,0) で現在日付の時刻を午前0時にリセットしています。
  • getTime() メソッドは1970年1月1日からの経過ミリ秒数を返すため、数値として厳密に比較できます。
  • この例では「2018年5月25日」と「2018年1月1日」を比較しているため「等しくない」という結果になります。同じ日付であれば「等しい」と表示されます。

別の方法:toDateString() を使う

文字列として日付部分だけを取り出して比較する方法もあります。toDateString() は「Mon Jan 01 2018」のような形式の文字列を返すため、時刻情報を含まずに手軽に比較できます。

if (date1.toDateString() === date2.toDateString()) {
   console.log("同じ日付です");
} else {
   console.log("異なる日付です");
}

どちらの方法でも日付のみの比較が可能ですが、setHours()によるリセットは元のDateオブジェクトを変更する点、toDateString()は文字列化する点がそれぞれ特徴です。用途に応じて使い分けるとよいでしょう。

  1. JavaScriptで現在の時刻を別のタイムゾーンの時刻に変更して表示する方法

    JavaScriptのDateオブジェクトは、端末(システム)に設定されている時刻をそのまま取得して現在の日付・時刻を表示します。そのため、JavaScript単体でシステム時刻そのものを書き換えることはできません。 しかし、UTC(協定世界時)との時差であるタイムゾーンオフセットを計算に組み込むことで、あたかも別の時刻が設定されたかのように表示することが可能です。以下では、シンガポール(GMT+8)の時刻を求めるサンプルコードを紹介します。 サンプルコード <!DOCTYPE html> <html>    <body>  

  2. MySQLでDateTime型のカラムを時刻を無視して日付のみで比較する方法

    DateTime型を日付のみで比較する基本MySQLにおいて、DateTime型のカラムを時刻部分を無視して日付だけで比較したい場合は、Date()関数を使用します。この関数はDateTime型の値から日付部分だけを抽出してくれるため、時刻に関係なく特定の日付のレコードを取得できます。基本的な構文は以下の通りです。「yourDateValue」の部分には、比較対象となる日付を「YYYY-MM-DD」形式で指定してください。select *from yourTableName where Date(yourColumnName)=yourDateValue;サンプルテーブルの作成まず、動作を確認