首页 > 解决方案 > 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

当我在 originalDate 对象中使用 clearTime() 时 personInstance 如何得到更新。

让我知道如何在不更改域实例的情况下在这里使用 clearTime()。

标签: grailsjava.util.date

解决方案


Date.clearTime()修改底层实例时,您应该创建它的副本:

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

推荐阅读