请帮我写一个方法,返回从提供日期到今天日期的天数(int)。
所以,比方说,我提供了一个方法int 110515
(2011年5月15日)。它应该返回9
(包含或排除对我来说并不重要)。
答案 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);
}