【发布时间】:2020-08-24 00:39:48
【问题描述】:
我有一个关于减去 Joda DateTimes 的问题,我使用 Period 来获取两者之间的日期、小时、分钟和秒数。
输出示例:2 天 11 小时 23 分钟 05 秒
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss");
DateTime firstDate = formatter.parseDateTime(firstStringDateValue);
DateTime secondDate = formatter.parseDateTime(secondStringDateValue);
DurationFieldType[] types = {DurationFieldType.days(),
DurationFieldType.hours(),
DurationFieldType.minutes(),
DurationFieldType.seconds()};
Period period = new Period(firstDate, secondDate, PeriodType.forFields(types));
PeriodFormatter periodFormatter = new PeriodFormatterBuilder()
.minimumPrintedDigits(2)
.appendDays().appendSuffix(" Day", " Days").appendSeparator(" ")
.appendHours().appendSuffix("h").appendSeparator(" ")
.appendMinutes().appendSuffix("min").appendSeparator(" ")
.appendSeconds().appendSuffix("sec")
.toFormatter();
String result = periodFormatter.print(period);
问题是开始日期大于结束日期。
结果是这样的:-2 天 -11h -23min -05sec
所以我想知道有没有办法让它看起来像这样: - 2 天 11 小时 23 分 05 秒,整个事情前面只有一个“-”。但是使用Joda相关的功能。
或者至少有一种方法可以告诉我 Period 是否为负数。
我可以使用字符串操作来做到这一点,但它似乎有点太手动了。
谢谢。
【问题讨论】:
标签: java date jodatime subtraction