0

我正在使用 Grails 插件,http ://grails.org/plugin/jquery-date-time-picker 日期和日期时间插件运行良好。然而,只是时间有问题。

我尝试仅将时间用于日期时间选择器。我的 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:00 am”的参数,但它从未在 addressInstance 中设置,我相信是因为缺少日期。

4

1 回答 1

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对象。在上述情况下(您只关心时间),您最终会得到时间为早上 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

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

于 2013-07-14T17:26:10.550 回答