我遇到了一些非常奇怪的事情。如果我在 Controller 中 println new Date() ,则输出为 UTC 格式(这就是我想要的)。但是当我从 grails gsp 打印 new Date() 时,日期是 EDT 格式并且关闭。
我在 CentOS Linux 6.5 到 Tomcat 7 上运行我的应用程序。系统日期和硬件日期使用 UTC。
这是我的 Java 版本:
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
我尝试添加:
TimeZone.setDefault(TimeZone.getTimeZone("UTC"))
根据我的引导,但它在 View 中仍然不使用 UTC。
基本上,我希望所有内容都使用 UTC,但唯一不使用 UTC 的情况是当我从 View 中打印 new Date() 时。
有什么想法吗?
编辑:
我不相信 formatDate 对我有用,因为我实际上不只是为用户显示日期。我正在将 new Date() 对象与另一个日期进行比较。我只是将日期打印到响应中,因为我想了解为什么比较日期不起作用。以下是我与 new Date() 对象一起使用的代码片段:
<g:set var="dateNow" value="${new Date()}" />
<g:if test="${ticket.ticketEndDate.before(dateNow)}">
<div>
Ticket closed on ${ticket.ticketEndDate.format('EEE MMM dd, yyyy hh:mm a')}.
</div>
</g:if>
最佳答案
您不应该使用类似 ${new Date()}
的内容在 GSP 中向响应呈现日期。您应该使用<g:formatDate>
标记,当您这样做时,您可以指定一个格式字符串,该字符串具体表示您希望如何格式化日期。请参阅http://grails.org/doc/latest/ref/Tags/formatDate.html获取示例和更多详细信息。
关于java - Grails/Java new Date() 在 GSP 中不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24898020/