如何编写一个返回从提供日期到今天日期的天数(int)的方法?

时间:2011-05-24 23:55:19

标签: java

请帮我写一个方法,返回从提供日期到今天日期的天数(int)。

所以,比方说,我提供了一个方法int 110515(2011年5月15日)。它应该返回9(包含或排除对我来说并不重要)。

3 个答案:

答案 0 :(得分:2)

如果您可以使用Joda,这非常简单:

Days d = Days.daysBetween(startDate, endDate);
int days = d.getDays();

当然你可以把这些结合起来。

int days = Days.daysBetween(startDate, endDate).getDays();

Joda对象可以很容易地在JDK的日期类之间来回传递。

对于第一部分,创建一个DateFormatter然后根据它解析字符串,如下所示:

DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyyMMdd");
DateTime dt = fmt.parseDateTime(strInputDateTime);

(当然把int变成一个字符串。)

答案 1 :(得分:0)

由于这似乎是一个家庭作业问题,我会帮助你。您需要使用Calendar.getTimeInMillis。然后,您将要创建一个NUMBER_OF_MILLIS_IN_DAY的常量。从那里你从initialDate中减去currentDate(以毫秒为单位)并除以常数。

答案 2 :(得分:0)

未来的日期是否应包括当天?如果今天是2011年5月24日,那么110529应该是4还是5?

public static long numberOfDays(final long date) throws ParseException {
    final Calendar compare = Calendar.getInstance();
    compare.setTime(new SimpleDateFormat("yyMMdd").parse(String.valueOf(date)));
    final int dstOffset = compare.get(Calendar.DST_OFFSET);
    final long currentTimeMillis = System.currentTimeMillis();
    final long compareTimeInMillis = compare.getTimeInMillis();
    long difference = 0;
    if (currentTimeMillis >= compareTimeInMillis) {
        difference = currentTimeMillis - compareTimeInMillis - dstOffset;
    } else {
        difference = compareTimeInMillis - currentTimeMillis + dstOffset;
    }
    return difference / (24 * 60 * 60 * 1000);
}