首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >joda PeriodFormatter打印null

joda PeriodFormatter打印null
EN

Stack Overflow用户
提问于 2016-01-11 22:08:03
回答 3查看 134关注 0票数 1

我不明白我做错了什么,我一定是漏掉了什么。

代码语言:javascript
复制
private PeriodFormatter fmt = new PeriodFormatterBuilder()
            .printZeroNever()
            .appendHours()
            .appendSeparator(":")
            .minimumPrintedDigits(2)
            .appendMinutes()
            .appendSeparator(":")
            .minimumPrintedDigits(2)
            .appendSeconds()
            .toFormatter();

然后

代码语言:javascript
复制
Period period = new Period(DateTime.now().getMillis()-startDate.getMillis(), PeriodType.millis());

Log.i("date", "fmt.print(period): " + fmt.print(period));
Log.i("date", "period.toString() : " + period.toString());
Log.i("date", "DateTime.now().getMillis()-startDate.getMillis() : " + (DateTime.now().getMillis()-startDate.getMillis()));

我的日志是

代码语言:javascript
复制
fmt.print(period): 
period.toString() : PT12.166S
DateTime.now().getMillis()-startDate.getMillis() : 12166

谢谢

-编辑

找到了,问题是,通过在period构造函数中指定“PeriodType.millis()”,我以这种方式获得了period :0分0秒152150毫秒我不知道我是否清楚,但这是我的错误,我删除了这个参数,现在它就像一个护身符一样工作。

代码语言:javascript
复制
Period period = new Period(startDate.getMillis(), DateTime.now().getMillis());
EN

回答 3

Stack Overflow用户

发布于 2016-01-11 22:28:56

Period类具有以下构造器:

代码语言:javascript
复制
Period(long startInstant, long endInstant, PeriodType type)

尝试更改:

代码语言:javascript
复制
     Period period = new Period(DateTime.now().getMillis()-startDate.getMillis(), PeriodType.millis());

至:

代码语言:javascript
复制
  Period period = new Period(DateTime.now().getMillis(), startDate.getMillis(), PeriodType.millis());
票数 0
EN

Stack Overflow用户

发布于 2016-01-12 00:24:36

它打印出一个空字符串是相当奇怪的行为,但这是因为您要求它打印毫秒类型,但是您的格式化程序定义中没有包括.appendMillis()。

它应该是这样的:

代码语言:javascript
复制
private PeriodFormatter fmt = new PeriodFormatterBuilder()
        .printZeroAlways()
        .appendHours()
        .appendSeparator(":")
        .minimumPrintedDigits(2)
        .appendMinutes()
        .appendSeparator(":")
        .minimumPrintedDigits(2)
        .appendSeconds()
        .appendSeparator(".")
        .appendMillis()
        .toFormatter();
票数 0
EN

Stack Overflow用户

发布于 2016-01-12 17:40:15

问题是,通过在period构造函数中指定“PeriodType.millis()”,我以这种方式获得了period : 152150分0秒152150毫秒我不知道我是否清楚,但这是我的错误,我删除了这个参数,现在它就像一个护身符一样工作。

代码语言:javascript
复制
Period period = new Period(startDate.getMillis(),DateTime.now().getMillis());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34723498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档