2011-11-06 67 views
4

我想使用joda時間比較(查找兩天之間的剩餘天數和時間)。 我以這樣的兩個日期時間對象(一個開始而另一個結束)使用jodatime查找剩餘日期和時間

DateTime endDate = new DateTime(2011,12,25,0,0,0,0); 
DateTime strtDate = new DateTime(); 

現在我有興趣找到這樣 days:49 Hrs:5 Min:52 Sec:45剩餘的日期和時間(不考慮這裏的年份和月份。)

現在我繼續與週期類這樣

Period period = new Period(); 

PeriodFormatter formatter = new PeriodFormatterBuilder() 
    .appendSeconds() 
    .appendMinutes() 
    .appendHours() 
    .appendDays() 
    .appendMonths() 
    .appendYears() 
    .printZeroNever() 
    .toFormatter(); 

現在的結果是我所得到的年,月,日,等...在這種情況下 我會得到之間的天(不是31,45,49 ...(我想要))總是。

所以,我怎麼能得到這個東西(有沒有,我很想念任何方法),或者我需要以編程方式處理這個問題,因爲我讀了喬達時間是非常靈活的,所以我非常肯定會有像任何方法這個。

如果您很熟悉,請分享您的知識。

回答

12

定義從天向下的所有標準字段與PeriodType.dayTime()

例如

DateTime startDate = DateTime.now(); // now() : since Joda Time 2.0 
DateTime endDate = new DateTime(2011, 12, 25, 0, 0); 

Period period = new Period(startDate, endDate, PeriodType.dayTime()); 

PeriodFormatter formatter = new PeriodFormatterBuilder() 
     .appendDays().appendSuffix(" day ", " days ") 
     .appendHours().appendSuffix(" hour ", " hours ") 
     .appendMinutes().appendSuffix(" minute ", " minutes ") 
     .appendSeconds().appendSuffix(" second ", " seconds ") 
     .toFormatter(); 

System.out.println(formatter.print(period)); 

樣本輸出

時期和endDate之間startDate

47天12小時46分鐘47秒


或者

PeriodFormatter formatter = new PeriodFormatterBuilder() 
     .appendPrefix("Day:", " Days:").appendDays() 
     .appendPrefix(" Hour:", " Hours:").appendHours() 
     .appendPrefix(" Minute:", " Minutes:").appendMinutes() 
     .appendPrefix(" Second:", " Seconds:").appendSeconds() 
     .toFormatter(); 

與輸出

天:47小時:12分:46秒:47

+0

嘿Ischin謝謝你,它的工作很好,無法找到PeiodType是關鍵。 –

+0

偉大的人!這解決了我的2周搜索問題!謝謝@Ischin –

+0

謝謝,完美的作品!我沒有使用PeriodType.dayTime()參數。 – luizMello

相關問題