Edited at

Thymeleaf でタイムゾーンを指定して現在日時を取得する


Expression Utility Objects #calendars

Expression Utility Objects (式ユーティリティオブジェクト) の #calendars を使う。

Tutorial: Using Thymeleaf (ja) - 19 Appendix B:式ユーティリティーオブジェクト - カレンダー

/*

* 現在日時のカレンダーオブジェクト(java.util.Calendar)を作成します
*/
${#calendars.createNow()}

${#calendars.createNowForTimeZone()}


サンプルコード

テンプレートHTMLを用意。

<!DOCTYPE html>

<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>title</title>
</head>
<body>

<!-- #calendars.createNow() -->
<p th:text="${#calendars.format(#calendars.createNow(), 'yyyy年MM月dd日 HH時mm分ss秒')}"></p>

<!-- #calendars.createNowForTimeZone('UTC') -->
<p th:text="${#calendars.format(#calendars.createNowForTimeZone('UTC'), 'yyyy年MM月dd日 HH時mm分ss秒')}"></p>

<!-- #calendars.createNowForTimeZone('Asia/Tokyo') -->
<p th:text="${#calendars.format(#calendars.createNowForTimeZone('Asia/Tokyo'), 'yyyy年MM月dd日 HH時mm分ss秒')}"></p>

<!-- #calendars.createNowForTimeZone('GMT+0900') -->
<p th:text="${#calendars.format(#calendars.createNowForTimeZone('GMT+0900'), 'yyyy年MM月dd日 HH時mm分ss秒')}"></p>

</body>
</html>


タイムゾーンおよびロケールが日本・日本語の環境で実行


  • #calendars.createNow()、'Asia/Tokyo'、'GMT+0900' は日本標準時で出力される

  • 'UTC' は協定世界時で出力される (日本より9時間前になる)

<!DOCTYPE html>

<html>
<head>
<meta charset="UTF-8">
<title>title</title>
</head>
<body>

<!-- #calendars.createNow() -->
<p>2019年09月14日 09時01分23秒</p>

<!-- #calendars.createNowForTimeZone('UTC') -->
<p>2019年09月14日 00時01分23秒</p>

<!-- #calendars.createNowForTimeZone('Asia/Tokyo') -->
<p>2019年09月14日 09時00分23秒</p>

<!-- #calendars.createNowForTimeZone('GMT+0900') -->
<p>2019年09月14日 09時00分23秒</p>

</body>
</html>


今回の環境


  • OpenJDK 11.0.2

  • Thymeleaf 3.0.11


参考資料