1

私はgroovyに不慣れで、現在日付の操作に取り組んでいます。とにかく、Groovyで2つの日付を減算または加算できるのでしょうか?たとえば、私は持っています:

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です。それらの日付の間に何時間または何分あるかを計算したい...私の悪い英語でごめんなさい:(

4

4 に答える 4

3

たとえば、開始日は 2013 年 1 月 7 日 12:00 で、終了日は 2013 年 1 月 8 日 1:30 です。それらの日付の間に何時間または何分あるかを計算したいと思います。

以下は、ミリ秒単位の差を示します。

def diffdate = secondDate.getTime() - firstDate.getTime();

適切な計算を使用して、時間と分に変換します。

たとえば、diffdate / 60000 は分、diffdate / 3600000 は時間です。

于 2013-01-14T02:55:10.130 に答える
2

TimeCategory の使用:

use (groovy.time.TimeCategory) {
   def duration = secondDate - firstDate
   println "Days: ${duration.days}, Hours: ${duration.hours}, Hours: ${duration.minutes}"
}
于 2013-01-14T03:01:13.873 に答える
1

カテゴリはTimeCategoryあなたが探しているものを正確に提供します:)

このカテゴリを使用すると、java.util.Datesがはるかにユーザーフレンドリーになり、ごくわずかなコードで期待どおりの処理を実行できるようになります。たとえば、2つの日付を減算TimeDurationし、結果としてaを取得します。

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"
}
于 2013-01-14T03:13:09.300 に答える
0

ここで仮定します。GroovyはJavaライブラリを使用できます。

その場合は、JodaTimeライブラリを調べる必要があります。。という名前のクラスがありDurationます。期間は2つのDateTimeクラスを取ることができます。それらはjavaDateのものと非常に似ています。期間をきれいに印刷する方法は次のとおりです。 便宜上、リンクに回答をインライン化します。

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);
于 2013-01-14T02:37:09.260 に答える