java - Grails/Java new Date() 在 GSP 中不同

标签 java grails timezone

我遇到了一些非常奇怪的事情。如果我在 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/

相关文章:

javascript - 如何在日期对象上设置 LocaleHours()?

database - session 和数据库的 oracle db 时区, session 区域的更改不起作用

java - 为什么liquibase无法解析db.changelog类路径?

java - while 循环 - 偶数之和及其平均值

java - 通过 Activity 传递 date.getTime,在目标 Activity 中使用 date.setTime,获取 NullPointerException

java - 当不再需要 DBCursor 时,我应该在方法中关闭它,还是可以将其留给垃圾收集器?

grails - Groovy 中的 sql.rows() 运行缓慢

java - Ubuntu 14.04 LTS 上的 Grails 出现奇怪的错误 .../3.1.5/grails-dependencies-3.1.5.jar'。从服务器 : Conflict 收到状态代码 409

java - 多个 JPanel 在 JLayeredPane 中绘制图像

java - 如何禁用添加时区