2013-10-11 18 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())); 
相关问题