java date iso,在Java 8中按时间段分析ISO日期

i want to replace JodaTime by Java 8 DateTime API.

I've got ISO-8601 period described = P2W5DT11H8M

In JodaTime i parse it very simply by executing the following code:

Period.parse("P2W5DT11H8M") and i get the successful Period object.

Can i do the same in Java 8?

解决方案

A Period in Java 8 only has year/month/day components. A Duration has hour/minute/second components. It seems that you will need to parse the string manually. One option could look like the code below (you need to add input validation etc.) - there may be better alternatives.

public static void main(String[] args) {

System.out.println(PeriodAndDuration.parse("P2W5DT11H8M"));

}

public static class PeriodAndDuration {

private final Period p;

private final Duration d;

public PeriodAndDuration(Period p, Duration d) {

this.p = p;

this.d = d;

}

public Period getPeriod() {

return p;

}

public Duration getDuration() {

return d;

}

public static PeriodAndDuration parse(String input) {

int periodStart = input.indexOf("P");

int timeStart = input.indexOf("T");

Period p = Period.parse(input.substring(periodStart, timeStart));

Duration d = Duration.parse("P" + input.substring(timeStart, input.length()));

return new PeriodAndDuration(p, d);

}

@Override

public String toString() {

return p.toString() + d.toString();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值