首页 > 解决方案 > Grails 3 与 Grails 4 - 日期和时间戳

问题描述

我正在尝试将我的 Grails 3 应用程序升级为 Grails 4。在这两种情况下,我都将它与 Java 8 和 Oracle 数据库一起使用。我看到了日期处理方式的差异,并试图找出有关日期的变化,但没有发现任何关于此的内容(在发行说明等中)。有没有人可以指出我的博客文章/发布说明?或者,解释下面的差异?

两个例子

我使用这样的函数从 Oracle 获取日期

Date currentDateTime; // NOte this is a java.util.date
{$Sql.TIMESTAMP = call GetcurrentDateTime} {
            returnedDateTime -> currentDateTime =  returnedDateTime;
        }

在 Grails 3 中,returnedDateTime 总是表现为 java.util.Date。我知道函数调用中的返回参数是 Sql.TIMESTAMP,但它会让我将它分配给 Date 变量,然后表现得像一个 Date。但在 Grails 4 中,它的行为类似于 java.sql.Timestamp,即使它被声明为 Date 变量。

另一个例子:在我看来,我会有一个看起来像这样的日期选择器

<div data-role="controlgroup" data-mini="true" data-type="horizontal" >
    <g:datePicker name="reportingPeriod" precision="month"
    value="${reportingPeriod}"
    default="none" noSelection="['':'']"
    />
</div>

在 Grails 3 中,我可以通过执行以下操作来回显该值:

log.info("params.reportingPeriod: " + params.reportingPeriod);

它将显示如下所示的结果params.reportingPeriodSun Dec 01 00:00:00 UTC 2019

我也可以分配

params.reportingPeriod 

直接到java.util.Date变量

但在 Grails 4 中,控制器改为显示这个

params.reportingPeriod: date.struct

并且它没有正确地直接分配给 Date 变量。

标签: grails

解决方案


推荐阅读