トラック
/
Java
Java
/
シラバス
/
日付と時刻
日付

日付と時刻 の Java

6個の演習

日付と時刻について

Java 8で導入されたjava.timeパッケージには、日付と時刻を扱うためのいくつかのクラスが含まれています。

LocalDate

java.time.LocalDateクラスは、ISO-8601の暦におけるタイムゾーンのない日付を表します。たとえば2007-12-03のようなものです。

LocalDate date = LocalDate.of(2007, 12, 3);

日付はほかの日付と比較できます。

LocalDate date1 = LocalDate.of(2007, 12, 3);
LocalDate date2 = LocalDate.of(2007, 12, 4);

date1.isBefore(date2);
// => true

date1.isAfter(date2);
// => false

LocalDateのインスタンスには、その各部分を取り出すためのゲッターがあります。

LocalDate date = LocalDate.of(2007, 12, 3);

date.getYear();
// => 2007

date.getMonthValue();
// => 12

date.getDayOfMonth();
// => 3

LocalDateのインスタンスには、時間の単位を加算するためのメソッドがあります。

Note

これらのメソッドは、新しいLocalDateのインスタンスを返します。LocalDateクラスは不変なので、既存のインスタンスは更新されません。

LocalDate date = LocalDate.of(2007, 12, 3);

date.plusDays(3);
// => 2007-12-06

date.plusMonths(1);
// => 2008-01-03

date.plusYears(1);
// => 2008-12-03

LocalDateTime

java.time.LocalDateTimeクラスは、ISO-8601の暦におけるタイムゾーンのない日時を表します。たとえば2007-12-03T10:15:30のようなものです。

LocalDateTime datetime = LocalDateTime.of(2007, 12, 3, 10, 15, 30);

datetime.getYear();
// => 2007

datetime.getMonthValue();
// => 12

datetime.getDayOfMonth();
// => 3

datetime.getHours();
// => 10

datetime.getMinutes();
// => 15

datetime.getSeconds();
// => 30

LocalDateクラスと同様に、LocalDateTimeのインスタンスにも、ほかのLocalDateTimeと比較したり、時間の単位を加算したりするための同じメソッドがあります。

LocalDateのインスタンスをLocalDateTimeに変換することもできます。

LocalDate date = LocalDate.of(2007, 12, 3);
LocalDateTime datetime = date.atTime(10, 15, 30);
datetime.toString();
// => "2007-12-03T10:15:30"

日時のフォーマット

LocalDateとLocalDateTimeはどちらも、Stringとの相互変換にISO-8601の標準表記を使います。

LocalDateTime datetime = LocalDateTime.of(2007, 12, 3, 10, 15, 30);
LocalDateTime parsed = LocalDateTime.parse("2007-12-03T10:15:30");

datetime.isEqual(parsed);
// => true

このように、異なるフォーマットを使ってStringからLocalDateやLocalDateTimeをパースすることはできません。 代わりに、独自のフォーマットで日付を整形したい場合は、java.time.format.DateTimeFormatterを使います。

DateTimeFormatter parser = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDate date = LocalDate.parse("03/12/2007", formatter);

DateTimeFormatter printer = DateTimeFormatter.ofPattern("MMMM d, yyyy");
printer.format(date);
// => "December 3, 2007"

独自のフォーマットを作成するときにロケールを指定すれば、地域ごとに整形したりパースしたりできます。

DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.FRENCH).format(date);
// => décembre 3, 2007

DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.of("pt")).format(date);
// => dezembro 3, 2007
GitHubで編集 リンクは新しいウィンドウまたはタブで開きます

日付と時刻を学習する