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

JavaScriptでUnixタイムスタンプを時刻に変換する方法

Unixタイムスタンプ(エポック秒)を人間が読める時刻に変換したい場面は、Web開発ではよくあります。JavaScriptではDateオブジェクトを使うことで簡単に変換できます。

ポイントは、Unixタイムスタンプが秒単位であるのに対し、JavaScriptのDateオブジェクトはミリ秒単位で時刻を扱うという点です。そのため、タイムスタンプに1000を掛けてからDateオブジェクトに渡す必要があります。

サンプルコード

以下は、Unixタイムスタンプを「時:分:秒」の形式に変換して表示するコード例です。

<html>
   <head>
      <title>JavaScript Dates</title>
   </head>
   <body>
      <script>
         // Unixタイムスタンプ(秒)
         var unix_time = 1514791901;

         // ミリ秒に変換してDateオブジェクトを生成
         var date = new Date(unix_time * 1000);

         // 時間を取得
         var hrs = date.getHours();

         // 分を取得(2桁に揃えるため先頭に0を追加)
         var min = "0" + date.getMinutes();

         // 秒を取得(2桁に揃えるため先頭に0を追加)
         var sec = "0" + date.getSeconds();

         document.write("Time- " + hrs + ":" + min.substr(-2) + ":" + sec.substr(-2));
      </script>
   </body>
</html>

実行結果

Time- 13:01:41

コードの解説

  • new Date(unix_time * 1000):秒単位のタイムスタンプをミリ秒に変換してDateオブジェクトを作成します。ここを忘れると意図しない日付になってしまうので注意しましょう。
  • getHours() / getMinutes() / getSeconds():それぞれ時・分・秒を数値として取得します。
  • min.substr(-2) / sec.substr(-2):分や秒が一桁の場合(例:5分)でも「05」のように2桁で表示できるよう、先頭に「0」を付けた文字列の末尾2文字を取り出しています。

なお、より現代的な書き方としては、padStart()メソッドを使ってString(date.getMinutes()).padStart(2, '0')のようにゼロ埋めを行うこともできます。また、日付まで含めて表示したい場合はtoLocaleString('ja-JP')などのローカライズ系メソッドを活用すると便利です。

  1. Pythonで日付(datetime)をUnixタイムスタンプに変換する方法

    Pythonでは、標準ライブラリのdatetimeモジュールを使って、日時オブジェクトをUnixタイムスタンプ(UTCタイムスタンプ)に変換できます。すでにUTCのdatetimeオブジェクトを持っている場合は、timestamp()メソッドを呼び出すだけで、エポック(1970年1月1日 0時0分0秒 UTC)からの経過秒数を取得できます。 一方、datetimeオブジェクトがローカルタイムゾーンの状態になっている場合は、まずreplace()メソッドなどでタイムゾーン情報を明示的に設定してから、タイムスタンプを取得する必要があります。タイムゾーン情報がないまま変換すると、意図しない値になる可

  2. Unixエポックタイムスタンプとは?エポック時間を日付に変換する方法を徹底解説

    コンピュータは、人間が使う自然言語(英語など)をそのまま理解できないことをご存知でしょうか?私たちが入力した命令はすべて、CPUが読み取って処理を実行する前に、バイナリコード(0と1だけで構成される2進数)へと変換されます。そして、処理結果も再び人間が読める形式へと翻訳されるのです。ここで一つ問題が生じます。「日付」は単純な0と1だけでは表現しきれない情報だという点です。この課題を解決するため、コンピュータ科学者たちは、あらゆる日付を「共通の基準点から経過した秒数」に変換する方式を採用しました。コンピュータに日付を与えると、内部では秒数へ変換され、時刻の起点となる最初の1秒から何秒経過したかが