2016-09-14 13 views
0

2つの日付/時刻間の日、時間、分、秒を検索しようとしています。私は期間を使うことができると思ったが、私は以下のコードを試したが、無意味な答えは得られなかった。このことから2つの日時オブジェクト間の日、時間、分、秒を計算するJoda時間

DateTime dt1 = new DateTime("2004-12-13T21:39:45.618-06:00"); 
    DateTime dt2 = new DateTime("2004-12-13T21:39:45.618-08:00"); 
    Period p = new Period(dt1, dt2); 

    System.out.println("Test: " + p); 

私は出力を得る:

I/System.out: Test: PT2H 

ないこれが意味することを意図するものを確認してください。あなたの助け

+0

あなたは説明できますか? –

+0

私には意味がないので。私はそれが理にかなったと思った。 –

+1

あなたに何が意味があるのか​​を明記してください。 'PT2H'は2時間の時間を完全に表します。 –

答えて

4

toString()方法このリンクを参照してくださいすることはISO8601期間形式としてあなたの価値を提供します。 APIから

はISO8601期間 形式のスタイルで文字列として値を取得します。技術的には、出力は 週が含まれる可能性があるため、ISO仕様に違反する可能性があります。たとえば、「PT6H3M5S」は6時間を表し、3 分、5秒です。

あなたは個別に取得するように依頼したよう時間あなたはAPIから便利getメソッドを使用することができます。他のよう

import org.joda.time.DateTime; 
import org.joda.time.Period; 

... 
DateTime dt1 = new DateTime("2004-12-13T21:39:45.618-06:00"); 
DateTime dt2 = new DateTime("2004-12-13T21:39:45.618-08:00"); 
Period p = new Period(dt1, dt2); 

System.out.println("DAYS: " + p.getDays()) 
System.out.println("HOURS: " + p.getHours()); 
System.out.println("MINUTES: " + p.getMinutes()); 
System.out.println("SECONDS: " + p.getSeconds()); 

または代わりに答えは、PeriodFormatterの使用を示唆しています。

+0

説明をいただきありがとうございます。本当に感謝しています。 to文字列メソッドは、同じ答えを与えました。しかし、それは私に与えているアウトプットを明確に説明してくれます。再度、感謝します。 –

+0

@NicholasMuir 'System.out.println'は暗黙的にオブジェクトの' toString() 'メソッドを呼び出すためです。あなたを助けてくれてありがとう。 – albciff

1

ため

おかげで私はあなたが期間のオブジェクトをフォーマットする必要がありますと思います。 PeriodPeriod to string

1

Periodをフォーマットする必要があります。あなたはまた、PeriodFormatterを使用して独自のフォーマットを作成することができます

PeriodFormat.getDefault().print(period) 

:簡単な方法は、デフォルトでこのようなものを使用することです。

2

期間は、ISO形式

で印刷されている標準ISOフォーマット - P yYmMwWd D T HH MMSS。

2日間の日数、時間、分、秒を特定する必要がある場合は、期間を特定のタイプに変換する必要があります。例えば。:それは無意味だと何の出力はあなたに理にかなって、なぜ

Period p = new Period(dt1, dt2); 
    System.out.println("Days: " + p.toStandardDays().getDays()); 
    System.out.println("Hours: " + p.toStandardHours().getHours()); 
    System.out.println("Minutes: " + p.toStandardMinutes().getMinutes()); 
    System.out.println("Seconds: " + p.toStandardSeconds().getSeconds()); 

やクラスDaysHoursに特別な静的メソッドを使用し、MinutesSeconds

System.out.println("Days: " + Days.daysBetween(dt1, dt2)); 
    System.out.println("Hours: " + Hours.hoursBetween(dt1, dt2)); 
    System.out.println("Minutes: " + Minutes.minutesBetween(dt1, dt2)); 
    System.out.println("Seconds: " + Seconds.secondsBetween(dt1, dt2)); 
関連する問題