如何在Groovy中检查当前时间是否介于startTime和endTime之间

时间:2012-03-16 07:05:52

标签: grails groovy

如何检查currentTime是否在startTime和endTime之间。不幸的是,我的域类必须使用startTime和endTime作为字符串。

更新

statTime只是时间,例如6.00 endTime只是时间,例如18:00

3 个答案:

答案 0 :(得分:3)

显而易见的方法是将两个字符串解析为您喜欢的任何日期/时间表示(我个人更喜欢Joda Time),然后将当前日期/时间与之比较。你试过吗?你在哪里变得昏迷?如果问题是他们而不是日期/时间值,那么Joda Time的LocalTime课程就是你想要的。 (不清楚为什么你的表示需要成为字符串,顺便说一句 - 你应该使你的域表示最自然,并将它转换为/你必须在边界处的文本表示,IMO。)

我强烈建议您使用某种静态调用来获取当前日期和时间。相反,使用依赖注入来注入“当前时间服务”,就像任何其他依赖项一样 - 然后您可以使用在测试中控制的“假时钟”对其进行单元测试,并注入一个真实的实现(可以使用{{ 1}}或任何你想要的东西)。

答案 1 :(得分:3)

将startTime和endTime解析为Dates,然后解析currentTime in startTime..endTime

答案 2 :(得分:0)

使用Groovy java.util.Date.parse(String format, String input)将字符串解析为 java.util.Date ,然后将 currentTime Date.before()进行比较 Date.after()。如有必要,使用 Date.getTime()将unix时间戳转换为 long