Grails 日期和时间仅获取';s空

Grails 日期和时间仅获取';s空,grails,plugins,datetimepicker,Grails,Plugins,Datetimepicker,我正在使用Grails插件, date和datetime插件运行良好。然而,时间有一个问题 我试着只为datetimepicker使用时间。我的Config.grovy如下所示 jqueryDateTimePicker { format { java { datetime = "dd/MM/yyyy HH:mm" date = "dd/MM/yyyy" } picker { date = "'dd/mm/yy'" tim

我正在使用Grails插件, date和datetime插件运行良好。然而,时间有一个问题

我试着只为datetimepicker使用时间。我的Config.grovy如下所示

jqueryDateTimePicker {
  format {
    java {
      datetime = "dd/MM/yyyy HH:mm"
      date = "dd/MM/yyyy"
    }
    picker {
      date = "'dd/mm/yy'"
      time = "'hh:mm tt'"
    }
  }
}
我的普惠制代码是这样的

<jqueryPicker:time name="openFrom" id="openFrom" value="${addressInstance?.openFrom}" pickerOptions="[dateFormat: '', timeOnly: true, hourGrid: '4', minuteGrid: '15', timeFormat: 'hh:mm tt']"/>

在控制器中,我可以看到参数的时间为“7:00 am”,但它从未在addressInstance中设置,我认为这是因为缺少日期。

默认的
date
绑定采用常规日期格式为
yyyy-MM-dd hh:MM:ss.S

为了将
openForm
date绑定到
addressInstance
,您可以显式地将其设置为:

//where params.openForm is String like "7:00 AM"
addressInstance.openForm = Date.parse("h:mm a", params.openFrom)
Date.parse()
将字符串解析为当前格式,以返回
Date
对象。在上述情况下(您只关心时间),您将以时间为上午7点的纪元(1970年1月1日)结束

def date = Date.parse("h:mm a", "7:00 AM")
//prints Thu Jan 01 07:00:00 EST 1970

//To get the time string from the date stored in db
date.format("h:mm a") //Prints 7:00 AM

您还可以查看是否可以注册自定义属性编辑器(如图所示),以使用自定义格式自动绑定日期。如果不希望将格式应用于所有日期字符串,则不希望遵循此操作。在这种情况下,我认为前一种方法将是有用且简单的。

address
a
Date
中的
openFrom
?你也能显示
地址
域吗?@dmahapatro是的,没错。类地址{Date openFrom}感谢您的快速响应。对于任何提到解决方案的人来说,都有一个输入错误,下面应该可以//其中params.openForm是类似于“7:00am”addressInstance.openFrom=Date.parse(“h:mm a”,params.get('openFrom'))的字符串,我有时间处理这个实例。这里有两件事,Date.parse()有点不推荐,那么还有其他解决方案吗?在显示日期时,发布保存,它以“01/01/1970 07:00”的格式显示,而我想显示为“7:00 am”,对此有何想法?我假设这是因为我的Config.groovyy中有datetime=“dd/MM/yyyy HH:MM”,您可能在谈论
parse(String-dateStr)
,上面的答案使用[parse(String-format,String-dateStr)](,java.lang.String))。其次,如果使用答案更新中所示的Date的format()方法,则可以将时间设置为
7:00am
def date = Date.parse("h:mm a", "7:00 AM")
//prints Thu Jan 01 07:00:00 EST 1970

//To get the time string from the date stored in db
date.format("h:mm a") //Prints 7:00 AM