关于java:使用joda time api计算两个日期之间的天数

Calculating the number of days between two dates using joda time api

本问题已经有最佳答案,请猛点这里访问。

我有两个约会。我正在从数据库中获取日期,如下所示:

1
2
Date d = new Date();
Date dTarget = finance.getTargetDate();

目前我的D是2017-12-29,dtarget是2017-12-31

现在,我尝试使用Joda时间API计算它们之间的天数。我期望天数为2,但目前我得到1,我认为这是不正确的。

我的时区是UTC+5:45

1
2
3
4
5
6
     //joda initital datetime
    DateTime intdt = new DateTime(new Date());
    DateTime targetDt = new DateTime(dTarget);

    int noOfDays = Days.daysBetween(intdt,targetDt).getDays();
    System.out.println(noOfDays);

我是否正确地发现了两个日期之间的区别?为什么这个案例没有显示2?


用这个

1
 Days.daysBetween(intdt.toLocalDate(), targetDt.toLocalDate()).getDays()

LocalDate类不存储或表示时间或时区。相反,它是对日期的描述。


1
2
3
4
5
6
7
8
9
10
11
12
SimpleDateFormat myFormat = new SimpleDateFormat("dd MM yyyy");
String inputString1 ="23 01 1997";
String inputString2 ="27 04 1997";

try {
    Date date1 = myFormat.parse(inputString1);
    Date date2 = myFormat.parse(inputString2);
    long diff = date2.getTime() - date1.getTime();
    System.out.println ("Days:" + TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS));
} catch (ParseException e) {
    e.printStackTrace();
}