- 更新日: 2022年09月13日
- 公開日: 2018年01月23日
Javaで日付を取得する簡単な方法【初心者向け】
アプリやシステム開発を扱う上で必須となる日時のデータ取得。
PHPやRubyに比べて用途範囲の広いJavaでは、日時取得の方法も様々です。
JavaプログラマーやSEを目指す上で知っておきたいJavaの日時取得の種類をサンプル交えてご紹介します。
よろしければ実際にコンパイルして、試してみて下さい。
Javaで日付を取得する簡単な方法
Javaの日付取得について
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型
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型
こちらは 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型
こちらは 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型
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
こちらは世界各国の日時を取得したい時に使う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
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
こちらは【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スキルが身に付く/
まとめ
時計を見ればひと目で分かる「時刻」ですが、Javaを用いて表現しようと思うといろいろな方法があることに気づきます。 GUIアプリやスマホアプリ、Webアプリを作成する上では必須になりますので、一応の知識は知っておきたいですね。
「今回ご紹介したコードがわからない」「Javaの基礎がまだ」という方は、CodeCampでJavaの基礎を習得してみませんか? 就職・転職を検討している方は、お得に受講できるエンジニア転職をはじめJavaコースのサービスもありますよ。
- この記事を書いた人
- オシママサラ