如何在grails中转换和比较日期字符串post值与createcritera文件日期



我使用Grails 2.0.3和比较一个日期字符串post值使用creatCriteria,我已经使用下面的方法将字符串转换为日期,但它总是空的?当我尝试时,我可以使用params.date()方法,因为我只传递一个字符串,对于搜索,它可以是日期在一个时间,或者它可以是数字等等…

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

my creatCriteria

 def vDate = new Date().parse(query.toString())
   {
  eq('dateCreated',vDate) 
   }

我错过了什么或有其他选择吗?我仍然相信这个微不足道的问题必须得到足够的解决,以便将来使用?

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

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()) 
  }

它会告诉你当天的所有日期。

可以使用

Date vDate = new java.text.SimpleDateFormat("yyyy-MM-dd").parse(query.toString())

如果您的数据库列类型是Date,那么使用@Kamil建议的方式应该没有问题。不过,有一种更好的方法可以将日期字符串解析为日期。

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

相关内容

  • 没有找到相关文章

最新更新