【Java】 日付・時間 について ~ 入門編 ~

■ はじめに

Java の 日付・日時 について、まとめる

 【1】日付に関するクラス

 1)Javaプログラム

[1-1] java.util.Date

  => 日付(YYYY/MM/DD)を扱う際に使用

https://docs.oracle.com/javase/jp/7/api/java/util/Date.html
[1-2] java.util.Calendar

  => 日時(YYYY/MM/DD HH:mm:ss SSS)

 ※ 月は、「0~11」でゼロ発進になっていることに注意

https://docs.oracle.com/javase/jp/7/api/java/util/Calendar.html

 2)DB用

[2-1] java.sql.Date

  => 日付(YYYY/MM/DD)を扱う際に使用

[2-2] java.sql.Timestamp

  => 日時(YYYY/MM/DD HH:mm:ss SSS)

[2-3] java.sql.Time

  => 時間(HH:mm:ss SSS)

 3)その他

* Java1.8で導入された日付・日時クラス 
 => 以下の関連記事を参照のこと。

日付・時間 について ~ Java8編 ~
https://dk521123.hatenablog.com/entry/2018/02/24/014650

 【2】相互変換

 文字列 <=> java.util.Date

// 文字列 => Date : SimpleDateFormat.parse() を利用
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
   Date date = format.parse("2014-11-21");
   System.out.println(date.toString());
} catch (ParseException e) {
   e.printStackTrace();
}

// Date => 文字列 : SimpleDateFormat.format() を利用
SimpleDateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
try {
   String text = dateformat.format(new Date());
   System.out.println(text);
} catch (Exception e) {
   e.printStackTrace();
}

 文字列 <=> Calendar

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class CalendarUtil {
   public static void main(String[] args) throws Exception {
      String created = "2014/12/09";
      Calendar calendar = CalendarUtil.toCalendar(created, "yyyy/MM/dd");
      String dateValue = CalendarUtil.toString(calendar, "yyyy-MM-dd HH:mm:ss");

      // Result : 2014-12-09 00:00:00
      System.out.println("Result : " + dateValue);
   }

   // 文字列 => Calendar
   private static Calendar toCalendar(String targetValue, String dateFormat) throws Exception {
      SimpleDateFormat dateformat = new SimpleDateFormat(dateFormat);
      try {
         Date date = new Date(dateformat.parse(targetValue).getTime());
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(date);
         return calendar;
      } catch (Exception ex) {
         throw ex;
      }
   }

   // Calendar => 文字列
   private static String toString(Calendar targetValue, String dateFormat) throws Exception {
      SimpleDateFormat dateformat = new SimpleDateFormat(dateFormat);
      try {
         return dateformat.format(targetValue.getTime());
      } catch (Exception ex) {
         throw ex;
      }
   }
}

 Date <=> Calendar

   // Date => Calendar 
  private static Calendar toCalendar(Date targetDate) {
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(targetDate);
         return calendar;
   }

 参考文献

http://d.hatena.ne.jp/chiheisen/20091123/1258986655
java.sql.Timestamp
http://www.itmedia.co.jp/enterprise/articles/0407/23/news002.html

 関連記事

日付・時間 について ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2016/10/12/235711
日付・時間 について ~ System.currentTimeMillis / System.nanoTime ~
https://dk521123.hatenablog.com/entry/2017/04/25/223122
日付・時間 について ~ Java8編 ~
https://dk521123.hatenablog.com/entry/2018/02/24/014650
【Kotlin】 日付・時間 について
https://dk521123.hatenablog.com/entry/2020/07/27/000000