Groovy TimeCategory—有没有比这更好的方法来操作时间/持续时间?

Groovy TimeCategory—有没有比这更好的方法来操作时间/持续时间?,groovy,Groovy,我越来越熟悉Groovy的TimeCategory和TimeDuration,这两种方式都非常有用,但我想知道是否有更干净的方式来表达我的需求 我在Intellij中的groovy控制台中尝试了以下几点: import groovy.time.TimeCategory println "" use(TimeCategory) { println "3.days.from.now = [${3.days.from.now}]" } 如果我现在就这么说,在2月1日星期三上午9:30左右,这

我越来越熟悉Groovy的TimeCategory和TimeDuration,这两种方式都非常有用,但我想知道是否有更干净的方式来表达我的需求

我在Intellij中的groovy控制台中尝试了以下几点:

import groovy.time.TimeCategory
println ""
use(TimeCategory) {
    println "3.days.from.now = [${3.days.from.now}]"
}
如果我现在就这么说,在2月1日星期三上午9:30左右,这会产生

3.days.from.now = [Sat Feb 04 00:00:00 EST 2017]
那不完全是我所期望的。进一步的实验表明,这是相当合理的——如果你增加一个特定精度的持续时间,比如以天为单位,那么从现在开始,它似乎会减少不太精确的度量。如果你加上几天或几个月,时间就会减少。如果添加小时,它将使用以下时间:

1.month.from.now = [Wed Mar 01 00:00:00 EST 2017]
1.hour.from.now = [Wed Feb 01 10:18:42 EST 2017]
为了回到我想要的,也就是在这个精确的时刻增加3天的时间,我尝试了以下方法:

import groovy.time.TimeCategory
println ""
use(TimeCategory) {
    now = new Date()
    println "now + 3.days = [${now + 3.days}]"
}
这就是我想要的

now + 3.days = [Sat Feb 04 09:18:42 EST 2017]
但它有点笨重,必须先申报日期。经过进一步的实验,我对这个有了一些改进:

(3.days + 0.minutes).from.now = [Sat Feb 04 09:18:42 EST 2017]

所以,如果这是最好的,我可以接受,但我觉得我很容易错过一个更好的方式。是否有一些聪明的方法来指定您想要添加一个月或一定数量的天数,但精度很高?或者只是一种更好的方法?谢谢

对于这个确切的问题,这是在假设您实际上只需要添加三天,而不进行任何其他操作的情况下工作的,日期算术的默认groovy行为就足够了:

$ groovysh
Groovy Shell (2.4.7, JVM: 1.7.0_79)
Type ':help' or ':h' for help.
-----------------------------------------------------------------------------------------------------------------------
groovy:000> x = new Date()
===> Wed Feb 01 22:01:17 CET 2017

groovy:000> x + 3
===> Sat Feb 04 22:01:17 CET 2017

groovy:000>

对于这个确切的问题,这是在假设您实际上只需要添加三天,而不进行任何其他操作的情况下工作的,日期算术的默认groovy行为就足够了:

$ groovysh
Groovy Shell (2.4.7, JVM: 1.7.0_79)
Type ':help' or ':h' for help.
-----------------------------------------------------------------------------------------------------------------------
groovy:000> x = new Date()
===> Wed Feb 01 22:01:17 CET 2017

groovy:000> x + 3
===> Sat Feb 04 22:01:17 CET 2017

groovy:000>
您是否愿意使用java.time

您是否愿意使用java.time


我发现,最终,使用java.time对我来说还不错。另外,我不清楚是否有一种不使用{}东西的好方法来使用TimeCategory——听起来你可以静态地调用它,但它并不比java.time漂亮。谢谢我发现,最终,使用java.time对我来说还不错。另外,我不清楚是否有一种不使用{}东西的好方法来使用TimeCategory——听起来你可以静态地调用它,但它并不比java.time漂亮。谢谢