【问题标题】:Finding Objects in period / between time X and time Y在时间段/时间 X 和时间 Y 之间查找对象
【发布时间】:2011-05-23 15:41:01
【问题描述】:

我正在用 groovy 和 grails 编写一个小型活动日历,我只想显示今天的活动。

def getEventsToday(List events) {
List eventsToday;
Date todayEvening = dateDefault(null, null, null, 23, 59, 59);
Date todayMorning = dateDefault(null, null, null, 0, 0, 0);
eventsToday = events.ByStartTimeBetween(todayEvening, todayMorning);
return eventsToday;
}

我得到以下异常:

 groovy.lang.MissingMethodException: No signature of method: EventController.dateDefault() is applicable for argument types: (null, null, null, java.lang.Integer, java.lang.Integer, java.lang.Integer) values: [null, null, null, 23, 59, 59]

我认为 dateDefault() 方法丢失了,但我不知道在哪个类中我能找到这个方法。 也许有人知道我的用例/问题的可能解决方案?

/编辑/ 这也不起作用,因为今天为空: Code http://img7.imagebanana.com/img/mracvfus/Bildschirmfoto20110605um11.32.57.png

感谢您的帮助! whitenexx

【问题讨论】:

  • 不确定你从哪里得到 dateDefault,它不是控制器或任何东西上的标准 grails 方法。您必须在 EventController 上定义 dateDefault 方法/闭包才能使其工作(我假设它是创建日期的便捷方法)。顺便说一句,我建议使用 Joda time(有一个 grails 插件)进行日期和时间处理,它比使用 java.util.Date 痛苦得多。
  • 我从网上的一个代码示例中得到了这个方法。下面的“clearTime()”方法也不起作用。

标签: java datetime date grails groovy


【解决方案1】:

假设List events 参数包含具有Date startTime 属性的对象集合,以下应该可以工作:

def getEventsToday(List events) {

  Date today = new Date().clearTime()

  events.findAll {event ->
    event.clearTime() == today
  }    
}

【讨论】:

  • 这不起作用:(它返回旧事件列表以及明天的事件。
猜你喜欢
  • 1970-01-01
  • 2021-09-11
  • 1970-01-01
  • 2016-08-13
  • 1970-01-01
  • 1970-01-01
  • 2015-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多