【Java】タイムスタンプを取得する方法

f:id:hira98:20190602192159p:plain

【結論】

  • Javaでは1970年1月1日午前0時からの経過時間をミリ秒単位で返すcurrentTimeMillis()を呼ぶことでタイムスタンプを取得できる。

  • 取得したタイムスタンプはTimestampクラスに渡す事で日時として扱える。

  • さらに、SimpleDateFormatクラスに渡す事で、出力フォーマットのカスタマイズも可能。

【目次】

このソース読めますか?

以下のJavaソースが理解できる方は、この投稿は読む必要ないです。

import java.sql.Timestamp;
import java.text.SimpleDateFormat;

public class TimeStamp {
  static String getTimeStamp() {
    Timestamp timestamp = new Timestamp(System.currentTimeMillis());
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HHmmss");
    return sdf.format(timestamp);
  }    
  public static void main(String[] args) {
    System.out.println(getTimeStamp());
  }
}

解説1)1970年1月1日からの経過時間を取得

Javaでの時刻計算は、UNIX時間というの1970年1月1日0時0分からの経過時間で時刻を表す方式に従っています。

System.currentTimeMillis()を呼ぶことで、現在時刻と協定世界時UTC 1970 年 1 月 1 日0時0分との差をミリ秒単位で取得することができます。

解説2)扱いやすい形に変換する

Timestamp()クラスを用いて、UNIX時間を扱いやすい形に変換します。

import java.sql.Timestamp;

Timestamp timestamp = new Timestamp(System.currentTimeMillis());

解説3)出力フォーマットのカスタマイズ

SimpleDateFormatクラスを用いることで、タイムスタンプの出力フォーマットを自由にカスタマイズできます。

// フォーマット方法を指定する。
// 以下の例だと
//  「2019年6月3日9時30分0秒」を
// 「2019-06-03_093000」に変換する。
」
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HHmmss");

// タイムスタンプを指定したフォーマットの文字列に変換する。
sdf.format(timestamp);

参考情報

【Java入門】Timestampで現在日時の取得とString型に変換する方法 | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト

System (Java Platform SE 7)

Timestamp (Java Platform SE 8)

SimpleDateFormat (Java Platform SE 8)

さいごに

正直、実装するだけならSamuraiBlogのコピペで済みました。

それをわざわざブログ投稿する理由は、以下2つのトレーニングになると信じているからです。

  • コピペ実装をブログ投稿できる形に昇華させる過程で情報整理力が付く。

  • なるべく嘘をつきたくないから、複数情報を参考にする過程でググるが付く。

と、自分で自分を鼓舞していくスタイルです。