Java 8 には、java.time パッケージの下に新しい時刻と日付 API のセットが含まれています。以下では、例を使用して、Java 8 の新機能日付 API に関する関連知識を説明します。興味のある友人は、一緒に見てみるとよいでしょう
Java 8 には、java.time パッケージの下に新しい時刻と日付 API のセットが含まれています。次の例は、この新しい API セットの最も重要な部分の一部を示しています。
1.Clock Clock クラスは、現在の日付と時刻にアクセスするためのメソッドを提供します。 Clock はタイムゾーンに依存するため、System の代わりに使用できます。 currentTimeMillis() を使用して現在のマイクロ秒数を取得します。特定の時点は、古い java.util.Date オブジェクトの作成にも使用できる Instant クラスを使用して表すこともできます。
Clock clock = Clock.systemDefaultZone(); long millis = clock.millis(); Instant instant = clock.instant(); Date legacyDate = Date.from(instant); // legacy java.util.Date
2. タイムゾーン タイムゾーン
新しい API では、タイムゾーンは ZoneId で表されます。タイムゾーンは、 の静的メソッドを使用して簡単に取得できます。 タイム ゾーンは UTS 時間との時差を定義し、インスタント時刻オブジェクトとローカル日付オブジェクトの間で変換する際に非常に重要です。
System.out.println(ZoneId.getAvailableZoneIds()); // prints all available timezone ids ZoneId zone1 = ZoneId.of("Europe/Berlin"); ZoneId zone2 = ZoneId.of("Brazil/East"); System.out.println(zone1.getRules()); System.out.println(zone2.getRules()); // ZoneRules[currentStandardOffset=+01:00] // ZoneRules[currentStandardOffset=-03:00]
3.LocalTime 現地時間
LocalTime は、午後 10 時や 17:30:15 など、タイムゾーン情報のない時間を定義します。次の例では、前のコードで作成したタイムゾーンを使用して 2 つの現地時間を作成します。次に、時間が比較され、2 つの時間の時差が時間と分で計算されます。
LocalTime now1 = LocalTime.now(zone1); LocalTime now2 = LocalTime.now(zone2); System.out.println(now1.isBefore(now2)); // false long hoursBetween = ChronoUnit.HOURS.between(now1, now2); long minutesBetween = ChronoUnit.MINUTES.between(now1, now2); System.out.println(hoursBetween); // -3 System.out.println(minutesBetween); // -239LocalTime は、時間文字列の解析など、オブジェクトの作成を簡素化するさまざまなファクトリ メソッドを提供します。
LocalTime localTime= LocalTime.of(23, 59, 59); System.out.println(localTime); // 23:59:59 DateTimeFormatter germanFormatter = DateTimeFormatter .ofLocalizedTime(FormatStyle.SHORT) .withLocale(Locale.GERMAN); LocalTime leetTime = localTime.format(germanFormatter); System.out.println(leetTime);
4.LocalDate ローカル日付
LocalDate は、2014-03-11 などの正確な日付を表します。オブジェクトの値は不変で、その使用方法は基本的に LocalTime と同じです。次の例は、Date オブジェクトに日/月/年を加算および減算する方法を示しています。また、これらのオブジェクトは不変であり、操作は常に新しいインスタンスを返すことにも注意してください。
LocalDate today = LocalDate.now(); LocalDate tomorrow = today.plus(1, ChronoUnit.DAYS); LocalDate yesterday = tomorrow.minusDays(2); LocalDate independenceDay = LocalDate.of(2014, Month.JULY, 4); DayOfWeek dayOfWeek = independenceDay.getDayOfWeek(); System.out.println(dayOfWeek); // FRIDAY文字列から LocalDate 型を解析することは、LocalTime を解析するのと同じくらい簡単です:
DateTimeFormatter germanFormatter = DateTimeFormatter .ofLocalizedDate(FormatStyle.MEDIUM) .withLocale(Locale.GERMAN); LocalDate xmas = LocalDate.parse("24.12.2014", germanFormatter); System.out.println(xmas); // 2014-12-24
5.LocalDateTime ローカルの日付と時刻
LocalDateTime は時刻と日付の両方を表します。最初の 2 つのセクション コンテンツは 1 つのオブジェクトにマージされます。 LocalDateTime は、LocalTime や LocalDate と同様に不変です。 LocalDateTime は、特定のフィールドにアクセスするためのメソッドをいくつか提供します。
LocalDateTime sylvester = LocalDateTime.of(2014, Month.DECEMBER, 31, 23, 59, 59); DayOfWeek dayOfWeek = sylvester.getDayOfWeek(); System.out.println(dayOfWeek); // WEDNESDAY Month month = sylvester.getMonth(); System.out.println(month); // DECEMBER long minuteOfDay = sylvester.getLong(ChronoField.MINUTE_OF_DAY); System.out.println(minuteOfDay); // 1439タイムゾーン情報が追加されていれば、ポイントインタイムのインスタントオブジェクトに変換できます。インスタントポイントインタイムオブジェクトは、昔ながらのjava.utilに簡単に変換できます。 。日付。
Instant instant = sylvester .atZone(ZoneId.systemDefault()) .toInstant(); Date legacyDate = Date.from(instant); System.out.println(legacyDate); // Wed Dec 31 23:59:59 CET 2014LocalDateTime のフォーマットは、時刻と日付のフォーマットと同じです。定義済みのフォーマットを使用することに加えて、独自にフォーマットを定義することもできます。
DateTimeFormatter formatter = DateTimeFormatter .ofPattern("MMM dd, yyyy - HH:mm"); LocalDateTime parsed = LocalDateTime.parse("Nov 03, 2014 - 07:13", formatter); String string = formatter.format(parsed); System.out.println(string); // Nov 03, 2014 - 07:13java.text.NumberFormat との違いは、新しい点です。 DateTimeFormatter は不変であるため、スレッドセーフです。
以上がJava 8 の新機能である日付 API の詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。