Java 日時
Javaで日時を操作をやってみます。Java8から新しい方式に変わったので、最初にJava7までの日時操作、次にJava8からの日時操作をやってみます。日時操作(~Java7)
package test;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Test {
public static void main(String[] args) throws ParseException {
// システム日付を取得
Date dt1 = new Date();
System.out.println(dt1);
// 日付オブジェクト→文字列
DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String d = df.format(dt1);
System.out.println(d);
// 文字列→日付オブジェクト
Date dt2 = df.parse("2019/06/05 11:22:33");
System.out.println(dt2);
// 日時の加算(減算)
Calendar calendar = Calendar.getInstance();
calendar.setTime(dt1);
calendar.add(Calendar.HOUR, -3);
Date dt3 = calendar.getTime();
System.out.println(dt3);
// 日時の差(単位:ミリ秒)
long diff = dt3.getTime() - dt2.getTime();
System.out.println(diff / (60 * 60 * 1000));
// カレンダー
// 日曜日:1
// 月曜日:2
// 火曜日:3
// 水曜日:4
// 木曜日:5
// 金曜日:6
// 土曜日:7
System.out.println(calendar.get(Calendar.DAY_OF_WEEK));
}
}
実行結果
Wed Jun 05 21:45:57 JST 2019
2019/06/05 21:45:57
Wed Jun 05 11:22:33 JST 2019
Wed Jun 05 18:45:57 JST 2019
7
4
日時の加算(減算)では時間単位に加算しましたが、以下の単位で計算できます。
指定 | 単位 |
---|---|
Calendar.YEAR | 年 |
Calendar.MONTH | 月 |
Calendar.DATE | 日 |
Calendar.HOUR | 時 |
Calendar.MINUTE | 分 |
Calendar.SECOND | 秒 |
Calendar.MILLISECOND | ミリ秒 |
日付操作(Java8~)
package test;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
public class Test {
public static void main(String[] args) {
// システム日付を取得
LocalDate dt1 = LocalDate.now();
System.out.println(dt1);
// 日付オブジェクト→文字列
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy/MM/dd");
String d = dt1.format(df);
System.out.println(d);
// 文字列→日付オブジェクト
LocalDate dt2 = LocalDate.parse("2019/06/05", df);
System.out.println(dt2);
// 日時の加算(減算)
LocalDate dt3 = dt1.plus(-3, ChronoUnit.DAYS);
System.out.println(dt3);
// 日時の差(単位:指定)
long diff = dt3.until(dt2, ChronoUnit.DAYS);
System.out.println(diff);
// カレンダー(曜日が月曜始まりに変わってる)
// 月曜日:1
// 火曜日:2
// 水曜日:3
// 木曜日:4
// 金曜日:5
// 土曜日:6
// 日曜日:7
DayOfWeek dow = dt1.getDayOfWeek();
System.out.println(dow + ":" + dow.getValue());
}
}
日時操作(Java8~)
package test;
import java.time.DayOfWeek;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
public class Test {
public static void main(String[] args) {
// システム日付を取得
LocalDateTime dt1 = LocalDateTime.now();
System.out.println(dt1);
// 日付オブジェクト→文字列
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
String d = dt1.format(df);
System.out.println(d);
// 文字列→日付オブジェクト
LocalDateTime dt2 = LocalDateTime.parse("2019/06/05 11:22:33", df);
System.out.println(dt2);
// 日時の加算(減算)
LocalDateTime dt3 = dt1.plus(-3, ChronoUnit.HOURS);
System.out.println(dt3);
// 日時の差(単位:指定)
long diff = dt3.until(dt2, ChronoUnit.HOURS);
System.out.println(diff);
// カレンダー(曜日が月曜始まりに変わってる)
// 月曜日:1
// 火曜日:2
// 水曜日:3
// 木曜日:4
// 金曜日:5
// 土曜日:6
// 日曜日:7
DayOfWeek dow = dt1.getDayOfWeek();
System.out.println(dow + ":" + dow.getValue());
}
}
実行結果
2019-06-05T21:59:47.787
2019/06/05 21:59:47
2019-06-05T11:22:33
2019-06-05T18:59:47.787
-7
WEDNESDAY:3
今回は、LocalDateTimeを使用しましたが、ZonedDateTime(タイムゾーン付き)、OffsetDateTime(時差情報付き)などもあります。
日時の加算(減算)は、以下の単位で計算できます。
指定 | 単位 |
---|---|
ChronoUnit.YEARS | 年 |
ChronoUnit.MONTHS | 月 |
ChronoUnit.DAYS | 日 |
ChronoUnit.HOURS | 時 |
ChronoUnit.MINUTES | 分 |
ChronoUnit.SECONDS | 秒 |
ChronoUnit.MILLIS | ミリ秒 |
ページのトップへ戻る