我想在GMT+6中得到当前的时间,但无法使它工作。传递timezone的正确格式是什么?
我试过以下几种方法-
[[${#dates.createNowForTimeZone('ASIA/DHAKA')}]]
[[${#dates.createNowForTimeZone("ASIA/DHAKA")}]]
[[${#dates.createNowForTimeZone('GMT+6')}]]
[[${#dates.createNowForTimeZone("GMT+6")}]]但是,所有这些都给了EDT时间。
发布于 2022-05-19 13:06:45
更新2022年11月
Thymeleaf 3.1版现在包含了对java.time的内置支持。
thymeleaf-extras-java8time附加模块已经集成到Thymeleaf核心:#temporals表达式实用程序对象现在总是可用的。
您不再需要为Thyeleaf 3.1继续添加下面提到的额外JAR。
(SpringBoot3.0使用Thymeleaf3.1,如果您使用Thymeleaf 3.1。
Thymeleaf 3.0和更早的
我建议您使用Thymeleaf“附加”库来处理Java8的java.time类,并避免与旧的和有缺陷的java.util.Date类相关。
图书馆:
如果使用的是Maven,则可以使用以下依赖项将其添加到项目中:
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-java8time</artifactId>
<version>3.0.4.RELEASE</version>
</dependency>否则,您可以从这里手动下载JAR。
一旦安装了新的JAR,就可以使用以下内容:
${#temporals.createNowForTimeZone(zoneId)} // return a instance of java.time.ZonedDateTime例如,如下:
<div th:text="${#temporals.createNowForTimeZone('Asia/Dhaka')}"></div>或者,使用问题中的语法,如下所示:
[[${#temporals.createNowForTimeZone('Asia/Dhaka')}]]示例输出:
2022-05-19T18:57:32.190245400+06:00[Asia/Dhaka]这是为目标时区生成的,当时我的本地日期时间是Thu May 19 08:57:32 EDT 2022。
关于区域ID的说明:
您可以阅读有关有效区域ID 这里的信息。在您的例子中,您需要小心地匹配ID文本的确切情况--所以它必须是Asia/Dhaka --而不是ASIA/DHAKA。
关于格式化的说明
您可能希望格式化日期字符串,在这种情况下,请查看列出的各种#temporals.format()函数这里。
但是,您也可能需要考虑在Java中格式化字符串,以保持Thymeleaf模板的整洁。
https://stackoverflow.com/questions/72300329
复制相似问题