-1

我使用 Grails 2.0.3 并使用 creatCriteria 比较日期字符串后值,我使用以下方法将字符串转换为日期,但它总是为空?当我尝试时,我可以使用 params.date() 方法,因为我只传递一个字符串,搜索它可以是一次日期,也可以是数字等等......

 println Date.parse('2013-02-05') 

我的 creatCriteria

 def vDate = new Date().parse(query.toString())

   {

  eq('dateCreated',vDate) 

   }

缺少什么或任何替代方案?我仍然认为这个微不足道的问题必须得到足够的解决以备将来使用?

4

3 回答 3

1

您可以使用

Date vDate = new java.text.SimpleDateFormat("yyyy-MM-dd").parse(query.toString())
于 2013-06-11T10:49:10.627 回答
1

如果您的数据库列是类型,Date那么使用@Kamil 建议的方式应该不会有问题。虽然,有一种更规范的方式来解析日期字符串。

def date = Date.parse('yyyy-MM-dd','2013-02-05')
assert date instanceof java.util.Date
于 2013-06-11T14:34:38.267 回答
1

首先使用此方法将您的字符串转换为日期。

def date = Date.parse('yyyy-MM-dd','2013-02-05')

现在使用今天开始和今天结束方法。

Date getTodayStart( Date inDate){
Calendar cal = Calendar.getInstance()
    cal.set(inDate[Calendar.YEAR], inDate[Calendar.MONTH], inDate[Calendar.DATE], 0, 0, 0)
    Date todayStart = cal.getTime()

    return todayStart
}

Date getTodayEnd(Date inDate){
Calendar cal = Calendar.getInstance()
    cal.set(inDate[Calendar.YEAR], inDate[Calendar.MONTH], inDate[Calendar.DATE], 0, 0, -1)
    Date todayEnd = cal.getTime() + 1

    return todayEnd
}

它会从一天开始到一天结束给你对象。

Date startDate = getTodayStart(date)
Date endDate =  getTodayEnd(date)

现在您可以创建日期标准。

  {
  between('dateCreated',startDate.toString(),endDate.toString()) 
  }

它会给你那天的所有日期。

于 2013-06-11T15:23:17.853 回答