Grails Как использовать Date.ClearTime() без влияния на значение объекта домена

Я пытаюсь получить дату без времени, используя следующий код.

List<Person> personList = Person.createCriteria().list(){
    eq("deleted", false)
    order("datetime","desc")
}

def dateTimeSet = new HashSet()

personList.each { personInstance ->

    Date originalDate = personInstance?.datetime

    println("Before Date In Instance: "+personInstance?.datetime)

    if(!dateTimeSet.contains(originalDate?.clearTime())){
        dateTimeSet.add(originalDate?.clearTime())
    }

    println("After Date In Instance: "+personInstance?.datetime)

}

ВЫХОД:

Before Date In Instance: Thu Sep 20 18:34:11 IST 2018
After Date In Instance: Thu Sep 20 00:00:00 IST 2018

Как обновляется personInstance, когда я использую clearTime() в объекте originalDate.

Дайте мне знать, как использовать здесь clearTime() без изменения экземпляра домена.


person Vivek Buddhadev    schedule 20.11.2018    source источник


Ответы (1)


Поскольку Date.clearTime() изменяет базовый экземпляр, вы должны создать его копию:

Date originalDate = personInstance?.datetime
if( !originalDate ) return
Date date = new Date( originalDate.time ).clearTime()
dateTimeSet << date
person injecteer    schedule 20.11.2018