Javaで日付を取得する簡単な方法【初心者向け】



Javaで日付を取得する簡単な方法【初心者向け】

アプリやシステム開発を扱う上で必須となる日時のデータ取得。
PHPやRubyに比べて用途範囲の広いJavaでは、日時取得の方法も様々です。
JavaプログラマーやSEを目指す上で知っておきたいJavaの日時取得の種類をサンプル交えてご紹介します。
よろしければ実際にコンパイルして、試してみて下さい。

目次
  1. Javaで日付を取得する簡単な方法
  2. Javaの日付取得について
  3. 【Javaの日時取得①】long型
  4. 【Javaの日時取得②】Date型
  5. 【Javaの日時取得③】String型
  6. 【Javaの日時取得④】6つのint型
  7. 【Javaの日時取得⑤】LocalTime
  8. 【Javaの日時取得⑥】Timestamp
  9. 【Javaの日時取得⑦】TimeZone
  10. まとめ

Javaで日付を取得する簡単な方法

Javaの日付取得について

image Javaの日付取得は、一般的にAPIを使って行います。 PHPやRubyに比べると若干手間に思えたり、現在進行形で増える時刻取得のAPIにも困惑しがちですが、基本さえおさえておけば大丈夫でしょう。 また日付取得は、フレームワーク(Spring等)やAndroid Appの開発でも登場しますので、就職・転職を検討している方にとっては必須項目といえますね。

名著「スッキリわかるJava入門」では、日付け取得のAPIは以下の4つの形式が紹介されていますが、この他にも知っておきたいAPIを3つご紹介しますね。

形式 概要
long型 基準日時からの経過時間で時刻取得
Date型 もっとも利用される形式
String型 人間にとって扱いやすい形式
6つのint型 カレンダーAPIを使って日時を表示

【上記以外のAPI】

  • LocalTime
  • Timestamp
  • TimeZone

【Javaの日時取得①】long型

image long型は、currentTimeMillis() メソッドを使って、基準日時の1970年1月1日0時0秒から何ミリ秒経っているかを計測することで現在日時を算出できます。 日時取得以外にもプログラムのランタイムの計測などができる特徴もありますね。

【上記画像のサンプルコード】

public class Main{
    public static void main(String[] args){
        long value = System.currentTimeMillis();
        System.out.println(value);
    }
}

【Javaの日時取得②】Date型

image こちらは Date クラスをインポートして現在時刻を取得します。 Javaの日時取得で最も使われるユースケースです。

【上記画像のサンプルコード】

import java.util.Date;
public class Main{
    public static void main(String[] args){
        Date now = new Date();
        System.out.println(now);
    }
}

【Javaの日時取得③】String型

image こちらは SimpleDateFormat クラスをインポートして現在時刻を取得。 Date型に比べると「年」や「月」「日」などのデータが扱いやすい特徴がありますね。

【上記画像のサンプルコード】

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

public class Main {
    public static void main(String[] args) {
        Date d = new Date();
        System.out.println(d); 

        SimpleDateFormat d1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        String c1 = d1.format(d); 
        System.out.println(c1); 

        SimpleDateFormat d2 = new SimpleDateFormat("yyyy年MM月dd日HH時mm分ss秒");
        String c2 = d2.format(d); 
        System.out.println(c2);
    }
}

【Javaの日時取得④】6つのint型

image Webやソフトを利用する時に、よく生年月日や開始年など「日付」を入力したり選択したりする場面があると思います。こうしたユーザーによる日時操作は、年・月・日・時・分・秒の6つをint型に指定して利用。 一般的には Calendarクラスが使われますね。 アプリ開発では、JCalendarなどが使われますが今回は基本的なCalendarクラスのサンプルをご紹介。

【上記画像のサンプルコード】

import java.util.*;
public class CalendarDemo {

   public static void main(String args[]) {
      String months[] = {"1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月","10月", "11月", "12月"};
      int year;      
      GregorianCalendar gcalendar = new GregorianCalendar();

      System.out.print("日付: ");
      System.out.print(year = gcalendar.get(Calendar.YEAR));
      System.out.print("年 ");
      System.out.print(months[gcalendar.get(Calendar.MONTH)]);
      System.out.println(" " + gcalendar.get(Calendar.DATE) + "日");

      System.out.print("現在時刻: ");
      System.out.print(gcalendar.get(Calendar.HOUR) + ":");
      System.out.print(gcalendar.get(Calendar.MINUTE) + ":");
      System.out.println(gcalendar.get(Calendar.SECOND));

      // うるう年のチェック
      if(gcalendar.isLeapYear(year)) {
         System.out.println("今年はうるう年です");
      }else {
         System.out.println("今年はうるう年ではありません");
      }
   }
}

【Javaの日時取得⑤】LocalTime

image こちらは世界各国の日時を取得したい時に使うAPIで、LocalTimeクラスをインポートして利用。 単なる時刻表示だけでなく、時差などの表示も可能ですね。

【上記画像のサンプルコード】

import java.time.LocalTime;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
public class Main {
    public static void main(String... args) {
        ZoneId zone1 = ZoneId.of("Europe/Berlin");
        ZoneId zone2 = ZoneId.of("Brazil/East");
        ZoneId zone3 = ZoneId.of("Asia/Tokyo");
        LocalTime now1 = LocalTime.now(zone1);
        LocalTime now2 = LocalTime.now(zone2);
        LocalTime now3 = LocalTime.now(zone3);
        System.out.println("ベルリンの時刻: " + now1);
        System.out.println("ブラジルの時刻: " + now2);
        System.out.println("東京の時刻: " + now3);
    }
}

【Javaの日時取得⑥】Timestamp

image Timestampは、データベースとの接続時に利用する日時APIです。 【Javaの日時取得②】で紹介した Date型と結果は似ていますが、オブジェクトの扱いに違いがありますね。

【上記画像のサンプルコード】

import java.sql.Timestamp;
import java.util.Date;

public class Main{
    public static void main( String[] args )
    {
        Date date= new Date();
        long time = date.getTime();
        Timestamp ts = new Timestamp(time);
        System.out.println("現在時刻: "+ts);
    }
}

【Javaの日時取得⑦】TimeZone

image こちらは【Javaの日時取得⑤】で紹介した LocalTime に似ていますが、より機能性をもったAPIになります。 少しコードが複雑ですが、参考程度に知っておきたいですね。

【上記画像のサンプルコード】

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

public class ObtainDate
{
   public static void main(String[] args)
   {
      ObtainDate obtainDate = new ObtainDate();
      TimeZone timeZone = TimeZone.getTimeZone("Asia/Tokyo");
      String dateFormat = "G yyyy MMMM dd"; 
      String timeFormat = "zzzz a hh:mm:ss.SSS";
      String dayFormat = "EEEEEE";
      System.out.println("今日は何曜日?" + obtainDate.getTodaysDay(dayFormat,timeZone));
      System.out.println("今日は何日?" + obtainDate.getTodayDate(dateFormat,timeZone));
      System.out.println("今は何時?" + obtainDate.getCurrentTime(timeFormat,timeZone));
  }

  public String getTodaysDay(String dayFormat, TimeZone timeZone)
  {
      Date date = new Date();
      DateFormat requiredFormat = new SimpleDateFormat(dayFormat);
      requiredFormat.setTimeZone(timeZone);
      String strCurrentDay = requiredFormat.format(date).toUpperCase();
      return strCurrentDay;
   }

   public String getCurrentTime(String timeFormat, TimeZone timeZone)
   {
      DateFormat dateFormat = new SimpleDateFormat(timeFormat);
      Calendar cal = Calendar.getInstance(timeZone);
      dateFormat.setTimeZone(cal.getTimeZone());
      String currentTime = dateFormat.format(cal.getTime());
      return currentTime;
   }

   public String getTodayDate(String dateFormat, TimeZone timeZone)
   {
       Date todayDate = new Date();
       DateFormat todayDateFormat = new SimpleDateFormat(dateFormat);
       todayDateFormat.setTimeZone(timeZone);
       String strTodayDate = todayDateFormat.format(todayDate);
       return strTodayDate;
   }
}

// https://beginnersbook.com/2013/05/java-date-timezone/

まとめ

時計を見ればひと目で分かる「時刻」ですが、Javaを用いて表現しようと思うといろいろな方法があることに気づきます。 GUIアプリやスマホアプリ、Webアプリを作成する上では必須になりますので、一応の知識は知っておきたいですね。

「今回ご紹介したコードがわからない」「Javaの基礎がまだ」という方は、CodeCampでJavaの基礎を習得してみませんか? 就職・転職を検討している方は、お得に受講できる CodeCamp Gate のサービスもありますよ。

関連記事

オシママサラ
この記事を書いた人
オシママサラ
\無料体験開催中!/自分のペースで確実に習得!
オンライン・プログラミングレッスンNo.1のCodeCamp