目次
Javaちょっとできるプログラマ。教育業界のエンジニアです。
工作HardwareHubからのお知らせ
新規作成
import java.time.LocalDateTime;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.ZonedDateTime;
import java.time.ZoneId;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.time.Clock;
import java.time.Instant;
class Main {
public static void main(String args[]) {
//// タイムゾーンという概念をもたないクラスの新規作成
// OS の時間が YYYY/mm/dd HH:MM::SS JST ならば
// YYYY/mm/dd HH:MM::SS (重要: タイムゾーン情報も時差情報もなし) で作成されます。
LocalDateTime dt = LocalDateTime.now();
LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();
// 指定して作成
LocalDateTime dt2 = LocalDateTime.of(9999, 12, 31, 23, 59, 59); // 9999/12/31 12:59:59
//// タイムゾーンとひもづくクラスの新規作成 (夏時間も考慮されます)
// OS のタイムゾーンによらず、現在の時刻が YYYY/mm/dd HH:MM::SS ZoneId ならば
// YYYY/mm/dd HH:MM::SS ZoneId で作成されます。
ZonedDateTime dt3 = ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));
ZonedDateTime dt4 = ZonedDateTime.now(ZoneId.of("UTC"));
ZonedDateTime dt5 = ZonedDateTime.now(ZoneId.systemDefault());
// 指定して作成
ZonedDateTime dt6 = ZonedDateTime.of(9999, 12, 31, 23, 59, 59, 0, ZoneId.of("UTC"));
ZonedDateTime dt7 = ZonedDateTime.of(dt, ZoneId.of("UTC"));
// UNIX タイムスタンプの利用
Clock clock = Clock.fixed(Instant.ofEpochSecond(1430681351), ZoneId.of("UTC"));
ZonedDateTime dt8 = ZonedDateTime.now(clock);
//// タイムゾーンではなく UTC との時差情報をもつクラスの新規作成
// OS のタイムゾーンによらず、現在の時刻が YYYY/mm/dd HH:MM::SS +X ならば
// YYYY/mm/dd HH:MM::SS +X で作成されます。
OffsetDateTime dt9 = OffsetDateTime.now(ZoneOffset.ofHours(+9));
OffsetDateTime dt10 = OffsetDateTime.now(); // OS の UTC との時差が利用されます
// 指定して作成
OffsetDateTime dt11 = OffsetDateTime.of(9999, 12, 31, 23, 59, 59, 0, ZoneOffset.ofHours(+9));
}
}
基本的な操作
import java.time.ZonedDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.time.Duration;
import java.time.temporal.TemporalAdjusters;
class Main {
public static void main(String args[]) {
ZonedDateTime dt = ZonedDateTime.now(ZoneId.of("UTC"));
// 文字列に変換
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss zZ");
System.out.println(dt.format(formatter)); //=> 2016/06/25 08:59:09 UTC+0000
// 加減算
Duration duration = Duration.ofHours(10);
ZonedDateTime dt2 = dt.plus(duration).minus(duration).plus(duration);
System.out.println(dt2.isEqual(dt)); //=> false
System.out.println(dt2.isBefore(dt)); //=> false
System.out.println(dt2.isAfter(dt)); //=> true
Long epoch = dt.toEpochSecond();
Long epoch2 = dt2.toEpochSecond();
System.out.println(epoch2 - epoch); //=> 36000 (= 60 * 60 * 10 secs)
// 月の最終日を取得
ZonedDateTime dt3 = dt.with(TemporalAdjusters.lastDayOfMonth());
}
}
0
記事の執筆者にステッカーを贈る
有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。
さらに詳しく →Feedbacks
ログインするとコメントを投稿できます。
関連記事
- Spring Security フォームログインのサンプルコードSpring フレームワークによる Web アプリケーション開発で、ログイン処理を実装する際は Spring Security が便利です。ここでは特に Spring Boot で Web アプリケーションを開発する場合を対象とし、フォームによる ID/Password ログインを行うためのサンプルコードをまとめます。 公式ドキュメント [Spring Security チュートリアル](http...
- Java配列の宣言方法 (C/C++との違い)Javaの配列 Javaの配列宣言方法はC/C++と似ているようで若干異なる。 初期化しない場合 C/C++の int array[10]; はJavaでは int array[] = new int[10]; となる。同様にC/C++の int array[3][3]; はJavaでは int array[][] = new int[3][3]; となる。 初期化
- PlantUML による UML 図の描き方PlantUML はテキスト形式で表現されたシーケンス図やクラス図といった UML (Unified Modeling Language) 図の情報から画像を生成するためのツールです。簡単な使い方をまとめます。 インストール方法の選択 Atom や Eclipse のプラグインをインストールしてエディタから利用する方法、JAR をダウンロードして Java コマンドで実行する方法、Redmine ...
- Akka HTTP サンプルコード (Scala)Akka アクターを用いて実装された汎用 HTTP フレームワークです。Spray の後継です。コアモジュールである akka-http-core は 2016/2/17 に experimental が外れました。akka-http などのいくつかのサブモジュールは 2016/3/1 現在 experimental のままですが、基本的な
- Kestrel の使用例Kestrel は Message Queue (MQ) の実装のひとつです。一般に MQ はアプリケーション間やプロセス間、スレッド間で非同期に通信するために用いられます。メッセージの送信側は MQ に書き込めば受信側の応答を待たずに次の処理に非同期に進むことができます。Kestrel はわずか 2500 行程の Scala で実装されており JVM で動作します。MQ 自体はメモリ上に存在する...