在两个日期之间获取日期?

时间:2014-10-13 21:08:47

标签: java date

我想要获得两个值之间的日子。其格式为MMdd。

实施例
第一次约会= 0501
第二个日期= 0519

尝试查找两个日期之间的天数值。在这个例子中将是18.请帮我这个。我试着四处寻找并找不到解决方案。谢谢!

我的代码
这是我到目前为止: 收到错误:类Project3中的方法天数无法应用于给定类型。

import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public class Project3 {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        String name = input.next() + input.nextLine();
        String car = input.next() + input.nextLine();
        String key = input.next();
        String firstDate = input.next(), lastDate = input.next();

        double S = 1.0, C = 1.2, U = 1.4, T = 1.6, B = 2.0;
        final double N = 89.22, V = (N - 11.4);
        double daily, total;
        String daysBetween = Project3.days();
    }

    public static long days(Date firstDate, Date lastDate) {
        Calendar start = Calendar.getInstance();
        start.setTime(firstDate);
        Calendar end = Calendar.getInstance();
        long daysBetween = 0;
        while (start.before(end)) {
            start.add(Calendar.DAY_OF_MONTH, 1);
            daysBetween++;
        }
        return daysBetween;
    }
}

3 个答案:

答案 0 :(得分:3)

使用Joda Time Days

DateTimeFormatter dtf = DateTimeFormat.forPattern("MMdd");
LocalDate day1 = dtf.parseLocalDate("0501");     
LocalDate day2 = dtf.parseLocalDate("0519"); 
int daysBetween = Days.daysBetween(day1, day2).getDays();

答案 1 :(得分:2)

Joda时间是执行此操作的正确方法,但如果您真的 使用纯JDK进行操作,则可以自行计算。

Calendar实例有一个.getTimeInMillis()方法,告诉您自某个固定起点以来的毫秒数。您可以将两个日期放入Calendar个实例中,然后计算两个getTimeInMillis()值之间的差异。

然后除以1000得到秒; 60分钟得到分钟;到60点钟才能得到;到了24天才能得到日子。并且交叉你的手指,希望在夏令时方面做到最好。

你还有另外一个问题,那就是因为你只有一天一个月而不是一年,所以没有一个独特的答案。 2月28日至3月1日之间的天数差异在大多数年份是一天,而在闰年是两天。如果你想假设2月只有28天,那就选择你喜欢的任何非闰年(例如,2014年)。

答案 2 :(得分:1)

这是一种计算两个日期之间天数的方法。它一直在前进,而开始日期在结束日期之前。无论夏令时间如何,它都能正常工作。

public static long days(Date startDate, Date endDate) {
    Calendar start = Calendar.getInstance();
    start.setTime(startDate);
    Calendar end = Calendar.getInstance();
    long daysBetween = 0;
    while(start.before(end)) {
        start.add(Calendar.DAY_OF_MONTH, 1);
        daysBetween++;
    }
    return daysBetween;
}
相关问题