2013-10-11 22 views
1

我計算hh:mm:ss.SSS格式我如何轉換時間從PT-4M-28.965S爲00:04:28.965

DateTime dt1; 
DateTime dt2; 
Period period; 
final DateTimeFormatter format = DateTimeFormat.forPattern("HH:mm:ss.SSS"); 

String endTime = "20:03:56.287"; 
String startTime = "19:59:27.322"; 
dt1 = format.parseDateTime(endTime); 
dt2 = format.parseDateTime(startTime); 
period = new Period(dt1,dt2); 
System.out.println(period); 

我得到PT-4M-28.965S
時間差,我怎樣才能將它轉換爲00:04:28.965

+0

嘗試'新的時期(dt2,dt1)' –

回答

2

Period格式化由PeriodFormatter類執行dateString的值將爲0:-4:-28.-965,因爲您已經定義了喲UR period因爲這:

String endTime = "20:03:56.287"; 
String startTime = "19:59:27.322"; 
dt1 = format.parseDateTime(endTime); 
dt2 = format.parseDateTime(startTime); 
period = new Period(dt1, dt2); 

其中dt1值大於dt2更大,所以-mm:ss:SSS之前。要獲得期望的結果,你需要的參數的順序改爲period

period = new Period(dt2, dt1); 

以及與此上面PeriodFormatter將返回0:4:28.965

+0

+1好的解釋。但是我想用'hh:mm:ss.SSS'格式的時間。因此,將'.minimumPrintedDigits(2)'方法添加到'formatter'對象中即可完成這項工作。 – jayantS

+0

@Mandrake歡迎您。 –

+0

+1更全面的解釋然後我的。 –

0

也許這是一個值Period.toString() 嘗試使用eg getHours()和其他getXXX()提取值的方法。

這是一個更好的答案:Period to string

1

你必須定義一個PeriodFormatterBuilder像這樣:

PeriodFormatter formatter = new PeriodFormatterBuilder().printZeroAlways() 
       .appendHours().appendSeparator(":").appendMinutes() 
       .appendSeparator(":").appendSeconds().appendSeparator(".") 
       .appendMillis3Digit().toFormatter(); 
String dateString = formatter.print(period.normalizedStandard()); 

但這:

DateTime dt1; 
DateTime dt2; 
Period period; 
final DateTimeFormatter format = DateTimeFormat.forPattern("HH:mm:ss.SSS"); 

String endTime = "20:03:56.287"; 
String startTime = "19:59:27.322"; 
dt1 = format.parseDateTime(endTime); 
dt2 = format.parseDateTime(startTime); 
period = new Period(dt1,dt2); 

PeriodFormatter fmt = new PeriodFormatterBuilder() 
    .appendHours() 
    .appendSeparator(":") 
    .appendMinutes() 
    .appendSeparator(":") 
    .appendSeconds() 
    .appendSeparator(".") 
    .appendMillis3Digit() 
    .toFormatter(); 

System.out.println(fmt.print(period.normalizedStandard())); 
相關問題