カテゴリ: Thymeleaf 更新日: 2026/03/31

Thymeleafの#calendarsユーティリティとは?初心者向けカレンダー操作ガイド

Thymeleafの#calendarsのユーティリティ
Thymeleafの#calendarsのユーティリティ

先生と生徒の会話形式で理解しよう

生徒

「Thymeleafでカレンダーの操作を簡単に行う方法はありますか?例えば、曜日や月ごとに処理を分けるようなことがしたいです。」

先生

「はい!Thymeleafには#calendarsという便利なユーティリティが用意されています。これを使うと、カレンダー操作が簡単にできますよ。」

生徒

「具体的にはどんなことができるんですか?」

先生

「それでは、#calendarsの基本的な使い方を詳しく見ていきましょう!」

1. #calendarsユーティリティの基本

「1. #calendarsユーティリティの基本」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

1. #calendarsユーティリティの基本
1. #calendarsユーティリティの基本

Thymeleafの#calendarsユーティリティは、カレンダー操作を簡単に行うための機能です。現在の年や月、曜日を取得したり、特定の日付に基づいた条件分岐を実現することができます。

以下は、現在の年を表示する基本的な例です。


<p th:text="${#calendars.year()}"></p>

このコードを実行すると、現在の年(例: 2025)が表示されます。

2. 現在の月と曜日を取得する

2. 現在の月と曜日を取得する
2. 現在の月と曜日を取得する

#calendarsを使うことで、現在の月や曜日を簡単に取得することができます。以下の例を見てみましょう。


<p th:text="${#calendars.month()}"></p>
<p th:text="${#calendars.dayOfWeek()}"></p>

このコードでは、現在の月(例: 1月)と曜日(例: 月曜日)がそれぞれ表示されます。これにより、カレンダーの情報を動的にテンプレートに組み込むことができます。

3. 特定の日付を基にした処理

3. 特定の日付を基にした処理
3. 特定の日付を基にした処理

#calendarsを使えば、特定の日付を基に条件を分けることも簡単です。以下のコードは、現在の日付が特定の日付よりも前か後かを判定する例です。


<p th:text="${#calendars.isAfter(#dates.create(2025, 1, 1), #dates.createNow()) ? '未来の日付です' : '過去の日付です'}"></p>

このコードでは、2025年1月1日が現在の日付よりも前か後かを判定し、それに応じたメッセージを表示します。

4. カレンダーのロジックをテンプレートに追加する

「4. カレンダーのロジックをテンプレートに追加する」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

4. カレンダーのロジックをテンプレートに追加する
4. カレンダーのロジックをテンプレートに追加する

#calendarsユーティリティを使うと、カレンダー関連のロジックをテンプレート内に組み込むことができます。以下は、1か月分のカレンダーをループで表示する例です。


<ul>
    <li th:each="day : ${#numbers.sequence(1, 31)}" th:text="'日付: ' + day"></li>
</ul>

このコードでは、1日から31日までのリストが生成され、各日付が「日付: 1」などの形式で表示されます。

5. 実践例: 動的カレンダー表示

5. 実践例: 動的カレンダー表示
5. 実践例: 動的カレンダー表示

以下は、動的に現在の年と月、そして日付リストを表示する実践例です。


<p>現在の年: <span th:text="${#calendars.year()}"></span></p>
<p>現在の月: <span th:text="${#calendars.month()}"></span></p>
<ul>
    <li th:each="day : ${#numbers.sequence(1, 31)}" th:text="'日付: ' + day"></li>
</ul>

この例では、動的に生成された現在の年と月、そして1か月分の日付がリストとして表示されます。

6. #datesと#calendarsの使い分け

6. #datesと#calendarsの使い分け
6. #datesと#calendarsの使い分け

Thymeleafには似た機能を持つ#datesがありますが、#calendarsはJavaのjava.util.Calendarオブジェクトを操作するために最適化されています。

  • #dates: 主にjava.util.Date型を扱い、単純なフォーマットや変換に適しています。
  • #calendars: 曜日、週番号、タイムゾーンの考慮など、より複雑なカレンダー計算が必要な場合に適しています。

2026年現在のモダンな開発では、特定の「タイムゾーン」を意識した表示を行いたい場合に、この#calendarsユーティリティが特に力を発揮します。

7. タイムゾーンを指定した日付表示

「7. タイムゾーンを指定した日付表示」の重要ポイントを、初心者の方にも分かりやすく簡潔に解説します。

7. タイムゾーンを指定した日付表示
7. タイムゾーンを指定した日付表示

グローバルなアプリケーションでは、サーバーの時刻ではなくユーザーの地域の時刻を表示する必要があります。#calendarsを使えば、特定のタイムゾーンに基づいた現在時刻を簡単に取得できます。


<!-- 日本標準時(JST)で現在の日時を表示 -->
<p th:text="${#calendars.format(#calendars.createForTimeZone(#calendars.createNow(), 'Asia/Tokyo'), 'yyyy/MM/dd HH:mm')}"></p>

<!-- ニューヨークの現在時刻を表示 -->
<p th:text="${#calendars.format(#calendars.createForTimeZone(#calendars.createNow(), 'America/New_York'), 'yyyy/MM/dd HH:mm')}"></p>

このように、createForTimeZoneメソッドを組み合わせることで、世界各地の時刻をテンプレート上で柔軟に書き分けることが可能になります。

8. 週末や特定の曜日を判定する

8. 週末や特定の曜日を判定する
8. 週末や特定の曜日を判定する

カレンダー表示において、「土日だけ文字色を変えたい」というケースは非常に多いです。#calendars.dayOfWeek()を利用した条件分岐の例を見てみましょう。


<!-- 日曜日(1)または土曜日(7)の場合にクラスを適用 -->
<span th:text="${day}" 
      th:class="${#calendars.dayOfWeek(targetDate) == 1 or #calendars.dayOfWeek(targetDate) == 7} ? 'text-danger' : ''">
</span>

dayOfWeekは日曜日を「1」として数え始めます。これを利用することで、CSSクラスの動的な切り替えが簡単に行え、視覚的に分かりやすいカレンダーUIを構築できます。

まとめ

まとめ
まとめ

今回の記事では、Thymeleafの#calendarsユーティリティを使用したカレンダー操作について詳しく学びました。#calendarsを利用することで、テンプレート内で日付やカレンダー情報を簡単に取得し操作できるため、動的なコンテンツを作成する際に非常に便利です。 例えば、現在の年や月、曜日の取得、日付の比較や条件分岐、さらに1か月分のカレンダー表示など、実践的な使用例を通してその効果的な使い方を学びました。

特に、#calendars.isAfter#calendars.year()などのメソッドは、動的な日付処理を実現するための強力なツールです。また、カレンダー操作に関連するループ処理や条件分岐も簡潔に書けるので、コードの可読性も向上します。


<p>現在の年: <span th:text="${#calendars.year()}"></span></p>
<p>現在の月: <span th:text="${#calendars.month()}"></span></p>
<ul>
    <li th:each="day : ${#numbers.sequence(1, 31)}" th:text="'日付: ' + day"></li>
</ul>
    

このコードは実際に動作するテンプレートの一例で、動的にカレンダー情報を表示する際に使用できます。こうした柔軟な機能を使いこなすことで、より使いやすいWebアプリケーションを構築できます。

先生と生徒の振り返り会話

生徒

「今回の学びで、Thymeleafでカレンダー操作がどれだけ簡単かよく分かりました!」

先生

「そうですね。特に#calendarsを使うと、日付や曜日などの情報を簡単に取得できて便利です。どんな場面で活用できそうですか?」

生徒

「例えば、予約システムやイベント管理アプリケーションで役立ちそうです。動的なカレンダー表示も簡単に作れそうですね!」

先生

「その通りです。ぜひ今回学んだ内容を活かして、実際のプロジェクトに応用してみてください。」

カテゴリの一覧へ
新着記事
New1
Spring
Spring Securityの新標準!SecurityFilterChainとHttpSecurity DSLの書き方を初心者向けに解説
更新記事
New2
Java
Javaの抽象クラス(abstract)を完全ガイド!継承と設計のルールを学ぶ
更新記事
New3
Servlet
JavaのGenericServletクラスのgetInitParameterNamesメソッドを徹底解説!初心者でもわかる初期化パラメータの取得方法
更新記事
New4
JSP
JSPとは何か?初心者向けにできること・仕組み・特徴をやさしく解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Servlet
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.3
Java&Spring記事人気No3
Java
JavaのIOExceptionクラス徹底解説!初心者向けファイル入出力エラー対策ガイド
No.4
Java&Spring記事人気No4
Spring
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.5
Java&Spring記事人気No5
JSP
JSPの基本タグ一覧と使い方まとめ!実務で使えるタグを紹介
No.6
Java&Spring記事人気No6
Java
Java開発環境「Eclipse(Pleiades)」のインストール方法とメリットを初心者向けに解説
No.7
Java&Spring記事人気No7
Spring
Spring BootとVS Codeで開発を始めよう!拡張機能・launch.json・ホットリロードを丁寧に解説
No.8
Java&Spring記事人気No8
Spring
Springの@Componentアノテーションの使い方を徹底解説!初心者でもわかるSpring Boot入門