检查当前日期是否在开始日期和结束日期之间

时间:2012-06-01 06:40:46

标签: hibernate grails groovy

我在Grails做一些工作。我的域类(简单消息)包含开始日期和结束日期。我想仅在当前日期(现在)在开始日期和结束日期之内向用户显示“消息”,即仅当今天在开始日期和结束日期之间时,该消息才应对用户可见。还请注意,我不希望任何时间相关的计算。

这是域类:

class SimpleMessage
{
    String message
    Date startDate
    Date endDate
}

以下是我的服务中定义的用于提取有效消息的方法:

def GetLiveMessages()
{
    def coTimeStamp = new Date().clearTime().toTimestamp()

    def c = SimpleMessage.createCriteria()

    def coCurrentMessages = c.list
    {
        ge("startDate", coTimeStamp) 
        le("endDate", coTimeStamp)
    }

    return coCurrentMessages
}

coCurrentMessages总是返回大小0.我已经添加了有效日期的记录(开始日期 - 2012年6月1日和2012年6月2日结束日期),仍然返回0(今天 - 2012年6月1日)。令人惊讶的是,如果我删除第二个约束'le',我会正确地获得消息记录。

我们将不胜感激。

1 个答案:

答案 0 :(得分:4)

如果上面使用的API类似于原生的Hibernate Restrictions API(我猜它是,因为它更合乎逻辑),你应该在使用ge时使用le,反之亦然:

le("startDate", coTimeStamp) // startDate <= current date
ge("endDate", coTimeStamp) // endDate >= current date