【发布时间】:2014-07-22 21:18:23
【问题描述】:
我遇到了一些非常奇怪的事情。如果我在控制器中 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"))
我的引导程序,但它仍然没有在视图中使用 UTC。
基本上我希望一切都使用 UTC,但唯一不是这样的情况是我从视图中打印 new Date()。
有什么想法吗?
编辑:
我不相信 formatDate 对我有用,因为我实际上不只是为用户显示日期。我正在将新的 Date() 对象与另一个日期进行比较。我只是将日期打印到响应中,因为我想看看为什么比较日期不起作用。这是我在新 Date() 对象中使用的代码 sn-p:
<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>
【问题讨论】:
-
您实际上是在使用“print”还是 g:formatDate?如果是后者,有一种方法可以传递时区:grails.org/doc/latest/ref/Tags/formatDate.html
-
我只是使用 ${new Date()} 在视图中显示日期。问题是我正在将新的日期对象(在视图中)与另一个 UTC 格式的日期进行比较。
-
@MattJohnson 这不是 stackoverflow.com/questions/12208305/… 的副本。