我正在计算hh:mm:ss.SSS
格式
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 :(得分:2)
Period
格式由PeriodFormatter
类执行:
PeriodFormatter formatter = new PeriodFormatterBuilder().printZeroAlways()
.appendHours().appendSeparator(":").appendMinutes()
.appendSeparator(":").appendSeconds().appendSeparator(".")
.appendMillis3Digit().toFormatter();
String dateString = formatter.print(period.normalizedStandard());
但是此dateString
的值为0:-4:-28.-965
,因为您已将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
将返回{{1}}。
答案 1 :(得分:1)
您必须如此定义PeriodFormatterBuilder
:
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()));
答案 2 :(得分:0)
也许这是Period.toString()
的值
尝试使用例如getHours()和其他getXXX()
方法来提取值。
这是一个更好的答案:Period to string