如何编写一种方法,该方法返回从提供的日期到今天的日期的天数int?

问题描述

| 请帮助我编写一个方法,该方法返回从提供的日期到今天的日期的天数(int)。 假设我们要向方法中提供int
110515
(适用于2011年5月15日)。它应返回
9
(包含或排除对我而言并不重要)。     

解决方法

将来的日期应该包括当天吗?意味着如果今天是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);
}
    ,如果可以使用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转换为字符串之后。)     ,由于这似乎是一个作业问题,所以我会帮助您。您将要使用
Calendar.getTimeInMillis
。然后,您将需要创建一个常量
NUMBER_OF_MILLIS_IN_DAY
。从那里,您从
currentDate
中减去
initialDate
(均为毫秒),然后除以常数。