Датата с време получава само NULL

Използвам приставката 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 сутринта", но той никога не се задава в addressInstance, вярвам, че датата липсва.


person Abhay    schedule 14.07.2013    source източник
comment
openFrom в Adress Date ли е? Можете ли да покажете и домейн Address?   -  person dmahapatro    schedule 14.07.2013
comment
@dmahapatro Да, точно така. клас Адрес{ Дата на отварянеОт }   -  person Abhay    schedule 14.07.2013


Отговори (1)


Стандартното 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 обект. В горния случай (където се интересувате само от времето), ще завършите с епохата (1 януари 1970 г.) с време като 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

Можете също така да видите дали можете да регистрирате редактор на персонализирани свойства, както е показано тук за автоматично обвързване на датата с персонализиран формат. Не бихте искали да следвате това, ако не искате да приложите формата към всички низове от дата. В такъв случай смятам, че първият подход ще бъде полезен и лесен.

person dmahapatro    schedule 14.07.2013
comment
Благодаря за бързата реакция. За всеки, който се позовава на решението, има правописна грешка, по-долу трябва да работи. //където params.openForm е String като 7:00 AM addressInstance.openFrom = Date.parse(h:mm a, params.get('openFrom')) Ами просто имам време за този екземпляр. Две неща тук, Date.parse() е доста отхвърлен, така че някакво друго решение? Докато показва датата, публикувайте запазването, тя я показва във формат 01/01/1970 07:00, докато аз бих искал да я покажа като 7:00 сутринта, някакви мисли за това? Предполагам, че това би било, защото имам datetime = dd/MM/yyyy HH:mm в моя Config.groovy - person Abhay; 15.07.2013
comment
Може да говорите за parse(String dateStr), където като горния отговор използва [parse(String format, String dateStr)](groovy.codehaus.org/groovy-jdk/java/util/, java.lang.String)). Второ, можете да получите времето като 7:00 AM, ако използвате метода format() на Date, както е показано в актуализацията на отговора. - person dmahapatro; 15.07.2013