JavaでString型とTimestamp型を変換する方法を現役エンジニアが解説【初心者向け】

初心者向けにJavaでString型とTimestamp型を変換する方法について解説しています。最初に文字列を扱うString型と日時を扱うTimestamp型、それぞれの性質について説明します。次にString型からTimestamp型への変換方法について書き方と手順を確認しましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事が4,000以上あります。現役エンジニアの方はこちらをご覧ください。

JavaでString型とTimestamp型を変換する方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

Javaについてそもそもよく分からないという方は、Javaとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、Java講座の内容をもとに作成しています。

 

田島悠介

今回は、Javaに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

String型とTimestamp型を変換する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

String型とは

まずは、String型について説明します。

String型というのは文字列を格納するための変数ですが、データそのものを保存するchar型やint型とは異なり、「プリミティブ型」と呼ばれる変数型とは少し異なり、「クラス型変数」と呼ばれるものです。

「クラス型変数」といのは、Javaでもともと用意されている「プリミティブ型」を使って定義した扱いやすい変数だと理解していただければ大丈夫です。

String型変数は、ダブルクォーテーションで

String 変数名 = "文字列"

のように記述することで定義します。

String型とchar型の違いについて詳しく知りたい方は、次の記事を参考にしてください。

関連記事:JavaでString型とchar型を変換する方法を現役エンジニアが解説【初心者向け】

 

Timestamp型とは

JavaにはTimestamp型という変数があります。この変数はJavaプログラムにおいて、SQLという言語で扱うことのできるのデータベースの日時を扱うための変数です。

例えば、現在の時刻のTimestamp型で取得したい場合には、System.currentTimeMills()メソッドを使って、

Timestamp currentTime = new Timestamp(System.currentTimeMills());

とすることで取得できます。これを実際にSystem.out.println()を使い、

System.out.println(currentTime);

として出力してみると、

2019-12-23 19:54:10.704

のように、現在の時刻がミリ秒まで取得できていることがわかります。

出力結果を見ると、

年-月-日 時:分:秒

というフォーマットで表示されていることがわかります。Timestamp型についての詳しい説明は次の記事を参考にしてください。

関連記事:JavaのTimestampクラスの使い方を現役エンジニアが解説【初心者向け】

 

[PR] Javaで挫折しない学習方法を動画で公開中

String型からTimestamp型に変換する方法

String型からTimestamp型に変換するには2ステップが必要です。この場合は、書式設定のためのクラスであるSimpleDateFormatクラスを利用します。

SimpleDateFormatクラスというのは、日付や日時などのフォーマットを指定するためのクラスです。

  1. SimpleDateFormatクラスを生成する
  2. SimpleDateFormatクラスを使って、文字列をString型からDate型に変換
  3. Date型からTimestamp型に変換

まず、ステップ①では、

SimpleDataFormat sdf  = new SimpleDateFormat("yyyy/MM/dd");

を実行します。

そして、ステップ②では、

String str = "2019/12/12";        //好きな日付
date = sdf.parse(str);

を実行します。このとき、String型変数の値が必ず、”年/月/日”の順番になっているようにしてください。

最後にステップ③では、

Timestamp ts = new Timestamp(data.getTime());

を実行します。以上のステップをまとめて1行で書くと、

Timestamp ts = new Timestamp(new SimpleDateFormat("yyyy/MM/dd").parse("2019/12/12").getTime());

となります。

(※try-catch構文を使わないとエラーが出ます!)

これをそのまま使って、”2019/12/12″を自分の好きな年月日に変更することで、好きな文字列をTimestamp型に変換することができます。

SimpleDateFormatクラスであるsdfを生成するときに、

"yyyy/MM/dd"

という文字列を代入したのは、受け取ったTimestamp型のデータを

年/月/日

というフォーマットに変換するようにあらかじめ指定しておいたということです。

SimpleDateFormatクラスでは、

  • 年 → yyyy
  • 月 → MM
  • 日 → dd

とそれぞれ対応付けることが決まっているので、”yyyy/MM/dd”という形で指定しました。

 

Timestamp型からString型に変換する方法

次に、今度は、Timestamp型からString型に変換する方法を説明します。Timestamp型として、

currentTimestamp

という変数があるとすると、

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");

というSimpleDateFormatクラスを作って、

String timeStr = sdf.format(currentTimestamp);

を実行すれば、currentTimestampをString型の文字列に変換できます。

 

実際に書いてみよう

それでは実際に、String型とTimestamp型の変換を行なってみましょう。まずは、適当な時刻をString型で表示して、それをTimestamp型に変換します。

以下がそのコードですが、try-catch構文が入っています。(よくわからなくても、tryのあとの{}の中身だけを理解してもらえれば大丈夫です。)

この構文を使わないと、コンパイルのときに、エラー: 例外ParseExceptionは報告されません。スローするには、捕捉または宣言する必要があります

と表示されてしまうので注意してください。

import java.sql.Timestamp;        //Timestamp型をインポート
import java.text.SimpleDateFormat;        //SimpleDataFormatクラスをインポート
import java.text.ParseException;        //try-catch構文で使うもの

public class Sample1{
        public static void main(String[] args){

                try{        //try文
                        Timestamp ts = new Timestamp(new SimpleDateFormat("yyyy/MM/dd").parse("2019/12/12").getTime());
                        System.out.println(ts);
                } catch (ParseException e){        //catch文
                        e.printStackTrace();
                }

        }
}

これを実行すると、

2019-12-12 00:00:00.0

となって、きちんとTimestamp型のフォーマットになっていることから、String型をTimestamp型に変換できていることが確認できます。次に、現在時刻をTimestamp型で取得し、String型に変換します。

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

public class Sample2{
        public static void main(String[] args){
                Timestamp currentTime = new Timestamp(System.currentTimeMillis());
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
                String str = sdf.format(currentTime);
                System.out.println(str);
        }
}

これを実行すると、

2019/12/23

と表示されます。(表示される日付は実行したときのものです。)

 

まとめ

以上のポイントは、

  • Timestamp型は、JavaでSQLデータベースの日時を扱うための変数型
  • 現在時刻をTimestamp型で取得したいときはSystem.currentTimeMills()メソッドを使う
  • Timestamp型↔String型の変換はSimpleDataFormatを使う

です。

 

この記事では、Timestamp型とString型について説明しました。少し複雑に見えるかもしれませんが、やっていることはシンプルなので手を動かしながら頑張って理解してみてください。

 

監修してくれたメンター

小倉翔悟 (おぐらしょうご)

AIプログラミングを使って開発を行う大学3年生。プログラミング歴は約3年。Pythonは割と好きな方。JavaもAndroid開発で触れていたりする。

大学では物理学を勉強中。好きな物理理論は一般相対性理論らしい。

意外と動物が好きだったり、、、。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは、初心者でも最短4週間で、JavaやServletの技術を使ってWebアプリケーション開発を習得できる、オンラインブートキャンプを開催しています。

 

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。