两个Java日期之间的正确时间段 [英] Right Period between two Java Dates

查看:389
本文介绍了两个Java日期之间的正确时间段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要帮助来获取两个Java日期之间的期间.我使用JodaTime进行计算,但结果不正确.

I need help to get the Period between two Java Dates. I use JodaTime for the calculation but the result isn't correct.

开始:2012年11月11日12:00
结束于:2012年12月16日20:15
(德国时间标准)
结果至少要持续5周,0天,8小时15分钟.

Start: 11.11.2012 12:00
End: 16.12.2012 20:15
(German time standard)
Result musst be 5 weeks, 0 days, 8 hours and 15 minutes.

我尝试

Period period = new Period( start.getTime(), end.getTime() );
weeks = Weeks.weeksBetween( new DateTime( start ), new DateTime( end ) ).getWeeks();
days = period.getDays();
hours = period.getHours();
minutes = period.getMinutes();

获得了5w 5d 8h 15m.

and got 5w 5d 8h 15m.


感谢您的帮助,但我认为我在JodaTime时期使用错误.当然,正确的是5w 5d 8h 15m的输出,但是我想要的更像是这样.


Thanks for the help but i think i use the JodaTime Period wrong. Off course is the output of 5w 5d 8h 15m right but what i want is more like this.

int days = Days.daysBetween( start, end ); // musst be 35 days
int weeks = ( days - ( days % 7 ) ) / 7;
days = days % 7;

现在是我5周零0天的结果.很抱歉给您带来的困惑,谢谢您的帮助.

Now is my result 5 weeks and 0 days. Sorry for the confusion and thanks for the help.

推荐答案

    DateTime start = new DateTime(new Date(2012, 11, 11, 12, 00, 00));
    DateTime end = new DateTime(new Date(2012, 12, 16, 20, 15, 00));
    Period period = new Period(start, end);
    System.out.println("Weeks: " + Weeks.weeksBetween( new DateTime( start ), new DateTime( end ) ).getWeeks());
    System.out.println("Days: " + period.getDays());
    System.out.println("Hours: " + period.getHours());
    System.out.println("Minutes: " + period.getMinutes());  

输出为

    Weeks: 5
    Days: 5
    Hours: 8
    Minutes: 15  

像魅力一样工作
代替Weeks.weeksBetween,您可以使用下一个解决方案(使用PeriodType)

works like a charm
instead of Weeks.weeksBetween you can use next solution (using PeriodType)

PeriodType periodType = PeriodType.standard().withMonthsRemoved();
Period period = new Period(new Date(2012, 11, 11, 12, 00, 00).getTime(), new Date(2012, 12, 16, 20, 15, 00).getTime(), periodType);
System.out.println(period.getWeeks());  

输出为

5

这篇关于两个Java日期之间的正确时间段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆