首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Thymeleaf时区

Thymeleaf时区
EN

Stack Overflow用户
提问于 2022-05-19 07:26:38
回答 1查看 104关注 0票数 1

我想在GMT+6中得到当前的时间,但无法使它工作。传递timezone的正确格式是什么?

我试过以下几种方法-

代码语言:javascript
复制
[[${#dates.createNowForTimeZone('ASIA/DHAKA')}]]

[[${#dates.createNowForTimeZone("ASIA/DHAKA")}]]

[[${#dates.createNowForTimeZone('GMT+6')}]]
[[${#dates.createNowForTimeZone("GMT+6")}]]

但是,所有这些都给了EDT时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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类相关。

图书馆:

Thymeleaf - Java 8时间API兼容性模块

如果使用的是Maven,则可以使用以下依赖项将其添加到项目中:

代码语言:javascript
复制
<dependency>
    <groupId>org.thymeleaf.extras</groupId>
    <artifactId>thymeleaf-extras-java8time</artifactId>
    <version>3.0.4.RELEASE</version>
</dependency>

否则,您可以从这里手动下载JAR。

一旦安装了新的JAR,就可以使用以下内容:

代码语言:javascript
复制
${#temporals.createNowForTimeZone(zoneId)}     // return a instance of java.time.ZonedDateTime

例如,如下:

代码语言:javascript
复制
<div th:text="${#temporals.createNowForTimeZone('Asia/Dhaka')}"></div>

或者,使用问题中的语法,如下所示:

代码语言:javascript
复制
[[${#temporals.createNowForTimeZone('Asia/Dhaka')}]]

示例输出:

代码语言:javascript
复制
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

另见java.time的正式区域名称列表在哪里?

关于格式化的说明

您可能希望格式化日期字符串,在这种情况下,请查看列出的各种#temporals.format()函数这里

但是,您也可能需要考虑在Java中格式化字符串,以保持Thymeleaf模板的整洁。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72300329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档