【问题标题】:Oddities when using joda to format certain time spans使用 joda 格式化某些时间跨度时的奇怪之处
【发布时间】:2011-07-02 11:34:00
【问题描述】:

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

我得到的数字示例如下:

开始:1309605480723 结束:1341227880000
开始时间:2011 年 7 月 2 日 4:18:00 AM
结束:2012-07-02 4:18:00 AM
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 小时甚至不能上转换为几天?

谢谢.

【问题讨论】:

  • 你得到的日志与代码应该打印的不匹配:它应该打印“formatter.print:”,它打印“formatter.print(span)”。您确定您正在查看正确的日志(或运行正确的代码)吗?
  • 复制 + 粘贴 ... 日志和代码被修剪以仅显示需要的内容

标签: java android jodatime


【解决方案1】:

救援文档! :)

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

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

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

尝试:

Period span = new Period(mStartTime, mEndTime);

【讨论】:

  • +1 用于解释,但您建议使用的构造函数也使用标准字段集。您应该添加第三个参数:PeriodType.yearMonthDayTime()
  • 当我剪切并粘贴我的解决方案时它起作用了。是的,许多构造函数确实使用标准的细粒度字段,但我认为 Period(long,long) 将始终有效。我用的是jodatime 1.6.2版,但是jmmv。
  • 这很奇怪,因为这个构造函数的 javadoc 说:“使用标准字段集从给定的间隔端点创建一个句点。”
  • 这有效:期间跨度=新期间(mStartTime,mEndTime);这也有效: Period span = new Period(mStartTime, mEndTime, PeriodType.yearMonthDayTime());谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多