我使用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