具有时间的日期仅获得NULL

时间:2013-07-14 15:51:06

标签: grails plugins datetimepicker

我正在使用Grails插件,http://grails.org/plugin/jquery-date-time-picker 日期和日期时间插件非常有效。但是,只是时间问题。

我试图仅将时间用于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'"
    }
  }
}

我的GSP代码类似于。

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

我的控制器

def addressInstance = new Address(params)

在控制器中,我可以看到时间为“早上7点”的params,但它从未在addressInstance中设置,我相信因为日期丢失了。

1 个答案:

答案 0 :(得分:0)

默认Date绑定将常规日期格式设为yyyy-MM-dd hh:mm:ss.S

为了将openForm日期绑定到addressInstance,您可以明确地将其设置为:

//where params.openForm is String like "7:00 AM"
addressInstance.openForm = Date.parse("h:mm a", params.openFrom)

Date.parse()将字符串解析为当前格式以返回Date个对象。在上述情况下(你只关心时间),你最终会得到时代(1970年1月1日),时间是早上7点。

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

您还可以查看是否可以注册here所示的自定义属性编辑器,以使用自定义格式自动绑定日期。如果您不想将格式应用于所有日期字符串,则不希望这样做。在这种情况下,我认为前一种方法将是有用和容易的。