Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Joda时间计算两个日期之间的年差…等_Java_Date_Time_Jodatime - Fatal编程技术网

Java 如何使用Joda时间计算两个日期之间的年差…等

Java 如何使用Joda时间计算两个日期之间的年差…等,java,date,time,jodatime,Java,Date,Time,Jodatime,我想使用输出两个日期之间的年、月、周、日、小时和分钟数。我的问题是,我在哪里实现一个月的周数(这从来都不是常数)。我认为我的%也不对 当我跑步时: import java.text.SimpleDateFormat; import java.util.Date; import org.joda.time.*; public class Test { public static void main(String[] args) { String dateStart = "01/01/20

我想使用输出两个日期之间的年、月、周、日、小时和分钟数。我的问题是,我在哪里实现一个月的周数(这从来都不是常数)。我认为我的%也不对

当我跑步时:

import java.text.SimpleDateFormat;
import java.util.Date;
import org.joda.time.*;

public class Test {

  public static void main(String[] args) {

String dateStart = "01/01/2000 05:30";
String dateStop = "02/2/2001 06:31";

SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm");

Date d1 = null;
Date d2 = null;

try {
    d1 = format.parse(dateStart);
    d2 = format.parse(dateStop);

    DateTime dt1 = new DateTime(d1);
    DateTime dt2 = new DateTime(d2);

    System.out.print(Years.yearsBetween(dt1, dt2).getYears() + " years, ");
    System.out.print(Months.monthsBetween(dt1, dt2).getMonths() % 52 + " months, ");
    System.out.print(Weeks.weeksBetween(dt1, dt2).getWeeks() % 4 + " weeks, ");
    System.out.print(Days.daysBetween(dt1, dt2).getDays() % 7 + " days, ");
    System.out.print(Hours.hoursBetween(dt1, dt2).getHours() % 24 + " hours, ");
    System.out.print(Minutes.minutesBetween(dt1, dt2).getMinutes() % 60 + " minutes, ");


 } catch (Exception e) {
    e.printStackTrace();
 }

}

}
给你这个现成的

1 years, 13 months, 0 weeks, 6 days, 1 hours, 1 minutes, 

为了美化和更好地控制输出,您可以使用a。

如果您只使用a,这会给您带来什么?周期是什么意思?我知道有持续时间、间隔和周期,但我不知道它们的区别。你说的“天数”是什么意思?您需要定义如何处理夏令时开始和结束时产生的23小时和25小时。仅供参考,Joda Time提供了三个类来定义时间跨度:,和。每一个都有不同的角度,并且它们彼此互操作。我建议你熟悉这三个方面。谢谢你,你帮了大忙。什么是
d1
d2
?@chx101它们是
Date
s,请查看问题中的代码以了解上下文。实际上,它们是
org.joda.time.DateTime
实例(或者更具体地说,
ReadableInstant
的实现)
Period period = new Period(d1, d2);
System.out.print(period.getYears() + " years, ");
System.out.print(period.getMonths() + " months, ");
// ...