Javaの日付と時刻(15)java.time.ZonedDateTime

4641 ワード

Javaの日付と時刻
原文リンク作者:Jakob Jenkov訳者:阿為目次:http://blog.csdn.net/tjgykhulj/article/details/68952451 ( )
ZonedDateTimeクラスは、Java 8における日時機能において、タイムゾーン付きの日時情報を表すクラスである.あるロケットの打ち上げ時間など、実際のイベントの開始時間を表すことができます.ZonedDateTimeクラスの値は可変ではないため、その計算方法は新しいZonedDateTimeインスタンスを返します.
ZonedDateTimeインスタンスを作成するには、ZonedDateTimeインスタンスを新規作成する方法がいくつかあります.例えば、現在時刻を値として新規オブジェクトとして使用する:ZonedDateTime dateTime = ZonedDateTime.now();もう1つの方法は、指定された年月日、時間分秒、ナノ秒、および時間領域IDを使用して新規オブジェクトを作成することである:
ZoneId zoneId = ZoneId.of("UTC+1");
ZonedDateTime dateTime2 = ZonedDateTime.of(2015, 11, 30, 23, 45, 59, 1234, zoneId);

ZonedDateTimeオブジェクトにアクセスする時間:
getYear()
getMonth()
getDayOfMonth()
getDayOfWeek()
getDayOfYear()
getHour()
getMinute()
getSecond()
getNano()

これらのメソッドの中にはintを返すものもあれば、列挙タイプを返すものもありますが、列挙タイプのgetValue()メソッドでint値を得ることができます.
ZonedDateTimeの計算ZonedDateTimeクラスには、時間計算を完了するための一連の方法が含まれています.
plusYears()
plusMonths()
plusDays()
plusHours()
plusMinutes()
plusSeconds()
plusNanos()
minusYears()
minusMonths()
minusDays()
minusHours()
minusMinutes()
minusSeconds()
minusNanos()

ただし、計算に注意すると、あいにくサマータイムを越えた場合(1時間補ったり1時間減らしたりする)、希望の結果が得られない可能性があります.代わりに、Periodを使用するのが正しい方法です.
ZonedDateTime zoneDateTime = previousDateTime.plus(Period.ofDays(3));

タイムゾーンはZoneIdクラスで表され、ZoneId.now()またはZoneId.of(「xxx」)を使用してインスタンス化できます.
ZoneId zoneId = ZoneId.of("UTC+1");

of()メソッドに渡されるパラメータは、「UTC+1」がUTC(グリニッジ時間)から1時間の時差を指す場合など、タイムゾーンのIDです.ZoneId(+1や-5など)を表す場合は、ゾーン名を使用する場合もあります.
ZoneId zoneId2 = ZoneId.of("Europe/Copenhagen");
ZoneId zoneId3 = ZoneId.of("Europe/Paris");

次の章:java.time.format.DateTimeFormatter