【Java】ZonedDateTimeで時間をコントロールしちゃうぞ!

こんにちは!Monです!

ZonedDateTimeで時間をコントロールしようというものです!

開発しているときに日付とか時間とか扱うことがあると思います

Java開発で時間を取り扱う中でよく使われるクラスが「ZonedDateTime」です(Java8以降)

今回は「ZonedDateTimeクラス」で用意されている一般的なメソッドを紹介したいと思います

では見ていきましょう!


1. 現在日時取得

// 現在処理日時取得
ZonedDateTime now = ZonedDateTime.now();

2. 時間をコントロール

// 1秒後を取得
ZonedDateTime nextOneSecond = now.plusSeconds(1L);
// 1秒前を取得
ZonedDateTime beforOneSecond = now.minusSeconds(1L);

// 1分後を取得
ZonedDateTime nextOneMinute = now.plusMinutes(1L);
// 1分前を取得
ZonedDateTime beforOneMinute = now.minusMinutes(1L);

// 1時間後を取得
ZonedDateTime nextOneHour = now.plusHours(1L);
// 1時間前を取得
ZonedDateTime beforOneHour = now.minusHours(1L);


3. 日付をコントロール

// 翌日の日付を取得
ZonedDateTime tomorrow = now.plusDays(1L);
// 昨日の日付を取得
ZonedDateTime yesterday = now.minusDays(1L);

// 1週間後の日付を取得
ZonedDateTime nextWeek = now.plusWeeks(1L);
// 1週間前の日付を取得
ZonedDateTime beforeWeek = now.minusWeeks(1L);

// 1か月後の日付を取得
ZonedDateTime nextMonth = now.plusMonths(1L);
// 1か月前の日付を取得
ZonedDateTime beforeMonth = now.minusMonths(1L);

// 月初の日付を取得
ZonedDateTime firstDayOfMonth = now.with(TemporalAdjusters.firstDayOfMonth());
// 月末の日付を取得
ZonedDateTime nextMonth = now.with(TemporalAdjusters.lastDayOfMonth());

// 1年後の日付を取得
ZonedDateTime nextMonth = now.plusYears(1L);
// 1年前の日付を取得
ZonedDateTime beforeMonth = now.minusYears(1L);

4. 日付・時間の指定

// 時間の指定
ZonedDateTime selectHour = now.withHour(1);
// 日の指定
ZonedDateTime selectDay = now.withDayOfMonth(1);
// 月の指定
ZonedDateTime selectMonth = now.withMonth(1);
// 年の指定
ZonedDateTime selectYear = now.withYear(2200);


5. その他

// 日付以下を切り捨てたい!(時間を00:00:00的な感じにしたい!)
ZonedDateTime onlyDate = now.truncatedTo(ChronoUnit.DAYS);
// 「2023年11月22日の日付切り捨て」はこんな感じ
ZonedDateTime selectDay = 
		now.withYear(2023)
		.withMonth(11)
		.withDayOfMonth(22)
		.truncatedTo(ChronoUnit.DAYS);


いかがでしたでしょうか?

ほとんど「plus」と「minus」がついており、覚えやすいですよね!

ぜひ参考にしてみてください!

ではっ




是非フォローしてください

最新の情報をお伝えします

コメントを残す