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

【JavaScript】エポック(1970年1月1日)からの経過日数を取得する方法

エポックからの経過日数とは?

「エポック(Epoch)」とは、コンピュータが時刻を扱ううえでの基準点となる1970年1月1日00:00:00 UTCのことを指します。JavaScriptでは、この基準日から現在の日付までの経過日数を簡単に計算することができます。

経過日数を求める手順は次のとおりです。

  • Math.abs()メソッド:2つの日付の差(ミリ秒)を正の値(絶対値)として取得します。
  • Math.floor()メソッド:差を秒に変換した後、86400(=1日の秒数)で割り、小数点以下を切り捨てて整数の日数を求めます。

サンプルコード

以下は、現在の日付とエポックを基準とした日付の差分から、経過日数を算出する具体例です。

<html>
   <head>
      <title>JavaScript Clone Date</title>
   </head>
   <body>
      <script>
         var current_date, epocDate;

         current_date = new Date();
         document.write("Current Date: "+current_date);

         var epocDate = new Date(new Date().getTime() / 1000);
         document.write("<br>Since epoch: "+epocDate);
         var res = Math.abs(current_date - epocDate) / 1000;

         // 2つの日付間の総日数を取得
         var days = Math.floor(res / 86400);
         document.write("<br>Difference (Days): "+days);
      </script>
   </body>
</html>

コードのポイント

  • new Date().getTime()で、エポックから現在时刻までのミリ秒を取得しています。
  • それを1000で割った値をもとに新しい日付オブジェクトを生成し、元の日付との差分を計算します。
  • 差分(ミリ秒)を1000で割って秒に変換し、さらに86400(24時間×60分×60秒)で割ることで日数を求めています。

実行結果

Current Date: Fri May 25 2018 15:42:43 GMT+0530 (India Standard Time)
Since epoch: Sun Jan 18 1970 21:44:03 GMT+0530 (India Standard Time)
Difference (Days): 17658

このように、Math.abs()Math.floor()を組み合わせることで、エポックから現在までの経過日数を整数値として取得できます。日付の差分計算は、アプリケーションで期間表示や履歴データの処理を行う際によく使われるテクニックなので、ぜひ覚えておきましょう。

  1. JavaScriptで例外のスタックトレースを取得する方法をわかりやすく解説

    JavaScriptで例外発生時のスタックトレースを取得するには、Errorオブジェクトのstackプロパティを利用するのが最も簡単な方法です。エラーオブジェクトを生成すると、その時点での関数の呼び出し履歴が自動的に記録されるため、特別なライブラリを導入しなくてもデバッグ情報を確認できます。実際にコードへ数行追加するだけで、スタックトレースを表示できます。以下がそのサンプルです。サンプルコード<html>    <head>       <script>        

  2. JavaScriptで現在のタイムスタンプを取得する方法(秒・ミリ秒)

    JavaScriptで現在時刻のタイムスタンプを取得したい場面は多くあります。この記事では、秒単位とミリ秒単位の2つの形式でタイムスタンプを取得する方法を解説します。JavaScriptのタイムスタンプの仕組みJavaScriptは「1970年1月1日0時0分0秒(UTC)=エポック(Epoch)」からの経過時間をミリ秒で扱います。一方、Unixタイムスタンプのように秒単位で扱う言語も多いため、用途に応じて単位を変換する必要があります。Unixタイムスタンプ(秒単位)を取得する方法Unixタイムスタンプとして一般的な秒単位の値が必要な場合は、Date.now()やgetTime()で取得したミ