Java Timestampから文字列(String)に変換、StringからTimestampへ変換する方法
Java Timestampから文字列(String)に変換、StringからTimestampへ変換する方法です。
java.sql.Timestampとは、SQLのTIMESTAMP型に対応したクラスで、日時データの操作をおこなう場合に利用します。Java.util.Dateクラスのサブクラスに位置しています。
ここでは TimestampをStringに変換する方法と、その逆のStringからTimestampへ変換する方法 を紹介します。
Sponsored Links
Timestampを理解する
まずはTimestampを理解しましょう。既に知識としてある方は読み飛ばしても問題ありません。
最初に現在日時を取得することにしましょう。
Timestampのコンストラクタには、ミリ秒の時間値を指定します。SystemクラスのcurrentTimeMillisメソッドを使えば、ミリ秒で表現される現在時間を返してくれるので、これを使います。
Timestamp currentTimestamp = new Timestamp(System.currentTimeMillis()); System.out.println(currentTimestamp);
結果はこう表示されます。
2018-08-09 14:40:12.021
ふむふむ、簡単ですね^^
Sponsored Links
TimestampをStringに変換する
TimestampをStringに変換するには、日付や時間の書式設定でおなじみのSimpleDateFormatクラスを使います。
Timestamp currentTimestamp = new Timestamp(System.currentTimeMillis()); System.out.println(currentTimestamp); String currentTimestampToString = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(currentTimestamp); System.out.println(currentTimestampToString);
結果はこう表示されます。
2018/08/09 14:40:12
おおおー、TimestampからStringに変換された―^^
これならシステムの画面や帳票への出力にも使えますね。
StringをTimestampに変換する
こんどは逆にStringからTimestampへ変換します。まずは文字列から日付に戻すところからですね。
こんなメソッドを用意しましょう。
public static Date toDate(String value, String format) { SimpleDateFormat dateFormat = new SimpleDateFormat(format); dateFormat.setLenient(false);// 日付や時刻を厳密にチェックする try { return dateFormat.parse(value); } catch ( ParseException e ) { return null; } finally { dateFormat = null; } }
はい、これはStringからjava.util.Dateへ変換するメソッドです。このメソッドの戻り値であるDateクラスにはgetTimeメソッドがあり、ミリ秒を返してくれます。それをTimestampのコンストラクタに渡してあげれば変換できます。
Timestamp currentTimestamp = new Timestamp(System.currentTimeMillis()); System.out.println(currentTimestamp); String currentTimestampToString = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(currentTimestamp); System.out.println(currentTimestampToString); Timestamp timestamp = new Timestamp(toDate(currentTimestampToString,"yyyy/MM/dd HH:mm:ss").getTime()); System.out.println(timestamp);
結果はこう表示されます。
2018-08-09 14:40:12.0
おおおおおー、StringからTimestampに変換された―^^
これならデータベースへの保存に使えますね。
Sponsored Links
サンプルソース
紹介した方法を清書するとこんな感じになります。
import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class TimestampConverter { private static String FORMAT_DATE_TIME = "yyyy/MM/dd HH:mm:ss"; public static void main(String[] args) { Timestamp currentTimestamp = new Timestamp(System.currentTimeMillis()); System.out.println(currentTimestamp); String currentTimestampToString = new SimpleDateFormat(FORMAT_DATE_TIME).format(currentTimestamp); System.out.println(currentTimestampToString); Timestamp timestamp = new Timestamp(toDate(currentTimestampToString, FORMAT_DATE_TIME).getTime()); System.out.println(timestamp); } public static Date toDate(String value, String format) { SimpleDateFormat dateFormat = new SimpleDateFormat(format); dateFormat.setLenient(false);// 日付や時刻を厳密にチェックする try { return dateFormat.parse(value); } catch ( ParseException e ) { return null; } finally { dateFormat = null; } } }
参考にしてみてください。
まとめ
Java8ではDate,Calendarクラスの代替として、“Instant”、”LocalDateTime”、”ZonedDateTime”が導入されましたね。中でもデータベースとの連携でよく使う”LocalDateTime”は「タイムゾーンなしの日時」で、不変の日付/時間オブジェクトとなっています。
まぁ、Javaでの日付・時刻操作のメンドくささ相変わらずなわけだけど、もう少しなんとかならないものかといつも思うわけです。慣れるしかないんでしょうけどね、ええ、ええ、はい。
とりあえずこの情報が誰かの役に立てばうれしいです。
おつかれさまでした。
Sponsored Links