我是groovy的新手,目前正致力于操纵日期。无论如何我们可以减少或添加两个日期在groovy?例如,我有:
def build = Build.get(params.id)
def firstDate = build.firstDate
def secondDate = build.secondDate
现在我想添加类似的日期:
firstDate + secondDate = (total hours or minutes)
....还是需要将其转换为整数?
更新
例如,开始日期是2013年1月7日12:00,结束日期是2013年1月8日1:30。我想计算他们在这些日期之间的小时或分钟...对不起我的英语不好:(
答案 0 :(得分:3)
例如,开始日期是2013年1月7日12:00,结束日期是 2013年1月8日1:30。我想计算它们是多少小时或分钟 在这些日期之间。
以下将以毫秒为单位给出差异。
def diffdate = secondDate.getTime() - firstDate.getTime();
现在使用适当的数学转换为小时和分钟。
e.g。 diffdate / 60000会给你分钟,diffdate / 3600000会给你几个小时
答案 1 :(得分:2)
使用TimeCategory:
use (groovy.time.TimeCategory) {
def duration = secondDate - firstDate
println "Days: ${duration.days}, Hours: ${duration.hours}, Hours: ${duration.minutes}"
}
答案 2 :(得分:1)
TimeCategory
类别提供了您正在寻找的内容:)
使用此类别时,java.util.Dates变得更加用户友好,让您可以使用非常少的代码执行您希望它们执行的操作。例如,subtracting two dates并获得TimeDuration
作为结果:
import groovy.time.TimeCategory
// Using same dates as the question's example.
def start = Date.parseToStringDate('Mon Jan 07 12:00:00 GMT 2013')
def end = Date.parseToStringDate('Tue Jan 07 01:30:00 GMT 2013')
use (TimeCategory) {
println start - end // Prints "10 hours, 30 minutes"
}
答案 3 :(得分:0)
我将在这里做一个假设:Groovy可以使用Java库。
在这种情况下,您应该查看JodaTime库。它有一个名为Duration
的类。持续时间可能需要两个DateTime
个类。它们与java Date非常相似。 Here's how you can print out a duration in a pretty way.为方便起见,我会在链接中列出答案:
Duration duration = new Duration(123456); // in milliseconds
PeriodFormatter formatter = new PeriodFormatterBuilder()
.appendDays()
.appendSuffix("d")
.appendHours()
.appendSuffix("h")
.appendMinutes()
.appendSuffix("m")
.appendSeconds()
.appendSuffix("s")
.toFormatter();
String formatted = formatter.print(duration.toPeriod());
System.out.println(formatted);