如何解决如何编写一种方法,该方法返回从提供的日期到今天的日期的天数int?
| 请帮助我编写一个方法,该方法返回从提供的日期到今天的日期的天数(int)。 假设我们要向方法中提供int110515
(适用于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
(均为毫秒),然后除以常数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。