使用joda格式化某些时间跨度时的奇怪之处

时间:2011-07-02 11:34:01

标签: java android jodatime

我很难理解这里发生了什么......我正在尝试将时间跨度转换为字符串(即“2年,6天,4小时,23秒”)。

我得到的数字样本如下:

  

开始:1309605480723结束:1341227880000
  开始时间:2011年7月2日上午4:18:00
  结束:2012年7月2日上午4:18:00
  span.toString:PT8783H59M59.277S
  formatter.print(span):0年,0个月,1天,23小时,59分钟,59秒
  span.toString(formatter):0年,0个月,1天,23小时,59分钟,59秒

产生上述代码的代码是:

Period span = new Period(mEndTime - mStartTime);
PeriodFormatter formatter = new PeriodFormatterBuilder()
    .printZeroAlways()
    .appendYears().appendSuffix(" year", " years").appendSeparator(", ")
    .appendMonths().appendSuffix(" month", " months").appendSeparator(", ")
    .appendDays().appendSuffix(" day", " days").appendSeparator(", ")
    .appendHours().appendSuffix(" hour", " hours").appendSeparator(", ")
    .appendMinutes().appendSuffix(" minute", " minutes").appendSeparator(", ")
    .appendSeconds().appendSuffix(" second", " seconds")
    .toFormatter();
Log.d(LOGTAG, "formatter.print: " + formatter.print(span.normalizedStandard()));
Log.d(LOGTAG, "span.toString: " + span.normalizedStandard().toString(formatter));

任何人都可以解释这些数字吗? 也许我正在做一些愚蠢的事情,看不到它(现在是凌晨4点),但我只是看不出为什么这些8783小时甚至无法升级到几天?

感谢。

1 个答案:

答案 0 :(得分:2)

救援文件! :)

org.joda.time.Period.Period(持续时间很长)

使用标准字段集从给定的毫秒持续时间创建一个句点。

仅使用句点类型中的精确字段。对于标准期间类型,这仅是时间字段。因此,年,月,周和日字段将不会填充

尝试:

Period span = new Period(mStartTime, mEndTime);