2015年11月18日水曜日

【Java】UTC時間の文字列をTimestamp型に変換する方法

こんにちは。エンジニアのKです。

solrのレスポンスに含まれる時間文字列をTimestamp型に変換しようとしたときに、少しはまったので覚書です。
solrに格納される時刻はデフォルトでUTC時間とのことで、ぱっと見、日本時間から9時間前の表記となります。
solrのdate型カラムのレスポンス値は以下のような文字列になっています。

2015-11-18T10:00:00Z

この文字列を以下のようにしてTimestamp型に変換します。

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.TimeZone;

(略)

    SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
    dateFormatter.setTimeZone(TimeZone.getTimeZone("UTC"));
    try {
        Timestamp t = new Timestamp(dateFormatter.parse("2015-11-18T10:00:00Z").getTime());
        System.out.println(t); // 2015-11-18 19:00:00.0
    } catch (ParseException e) {

    }


  1. SimpleDateFormatでフォーマットを指定します。TとZは'(シングルクオート)で囲んでエスケープしないとParseExceptionが投げられてしまいます。
  2. SimpleDateFormat#setTimeZoneでタイムゾーンを設定できます。今回は対象の文字列にあわせてUTCにします。
  3. あとはSimpleDateFormat#parseでDate型オブジェクトに、Date#getTime()でUNIXタイムスタンプ値に、さらにTimestampのコンストラクタに渡すことで、無事Timestamp型に変更することができました。


Related Posts:

  • 【Java】UTC時間の文字列をTimestamp型に変換する方法こんにちは。エンジニアのKです。 solrのレスポンスに含まれる時間文字列をTimestamp型に変換しようとしたときに、少しはまったので覚書です。 solrに格納される時刻はデフォルトでUTC時間とのことで、ぱっと見、日本時間から9時間前の表記となります。 solrのdate型カラムのレスポンス… Read More
  • Java初心者がはまったこと(文字列比較)はじめまして。WebエンジニアのKと申します。 これまでサーバサイドはほぼPHPで実装してきましたが、最近ではJavaへの挑戦も始めました。 慣れたPHPの感覚でJavaを書き始めると、思わぬところではまってしまうことがあり、 ここでは自戒の念を込めてはまったポイントを記しておこうと思います。 … Read More
  • Java初心者がはまったこと2(ラッパークラス)こんにちは。Java初心者のWebエンジニアKです。 PHPのノリでJavaを書いていたらはまったこと第二弾として、今回はラッパークラスについて書きたいと思います。 ■intとIntegerではまる Javaのソースコードを見ていると、例えば数値を扱う変数を作るとき、以下の2通りの宣言があるこ… Read More

0 コメント:

コメントを投稿