我被困在工作中,我怎么能连续6天检查?
例如:
如果指定的日期是:01/01/2011
我想从2011年1月1日起连续6天检查可用日期列表。 在找到连续的一天之后,它应该继续下一个连续的链条,这可以在列表中找到。
并跟踪连续6天的发现时间和时间?
如果有人可以帮助我,对我来说非常有帮助......
提前致谢。
答案 0 :(得分:2)
正如我在评论中所说,目前还不清楚你真正追求的是什么 - 但几乎某些使用Joda Time将使你的生活比标准库更容易。它只是一个更好的日期/时间API,可以产生更清晰的代码。
例如,这将迭代一个日期及其后的6个日期:
LocalDate date = new LocalDate(2010, 1, 1); // January is 1 in Joda. How novel.
for (int i = 0; i < 7; i++)
{
// Do something with date here - check it or whatever
date = date.plusDays(1);
}
你也可以用稍微不同的方式写这个:
LocalDate start = new LocalDate(2010, 1, 1);
LocalDate end = start.plusDays(7);
for (LocalDate date = start; date.isBefore(end); date = date.plusDays(1))
{
// Do something with date here
}
答案 1 :(得分:1)
Calendar lowerCal = Calendar.getInstance();
lowerCal.set(Calendar.MONTH, 0);
lowerCal.set(Calendar.DATE, 1);
lowerCal.set(Calendar.YEAR, 2011);
//set other param 0
Calendar higherCal = Calendar.getInstance();
higherCal.set(Calendar.MONTH, 0);
higherCal.set(Calendar.DATE, 1);
higherCal.set(Calendar.YEAR, 2011);
higherCal.add(Calendar.DATE, 6);
//set other param 0
Calendar calToCheck = Calendar.getInstance();
if (calToCheck.compareTo(higherCal) <= 0 && calToCheck.compareTo(lowerCal) >= 0 ){
//YES
}
另见
答案 2 :(得分:1)
对日期列表进行排序,然后使用您的逻辑
List<Date> dateList = new ArrayList<Date>();
//add your dates here
Collections.sort(dateList);
int count = 0;
Date previousDate = null;
List<Date> datesGroup = new ArrayList<Date>();
for (Date date : dateList) {
if (previousDate == null) {
previousDate = new Date();
count++;
} else {
long diff = date.getTime() - previousDate.getTime();
if (diff == 86400000) {
count++;
} else {
count = 0;
datesGroup.clear();
}
}
datesGroup.add(date);
previousDate.setTime(date.getTime());
if (count == 6) {
break;
}
}
for (Date dates : datesGroup) {
System.out.println("dates sorted : " + dates);
}
答案 3 :(得分:0)
这段代码为您提供了两天的日期差异:
import java.util.*;
public class DateDifference {
public static void main(String args[]){
DateDifference difference = new DateDifference();
}
DateDifference() {
Calendar cal1 = new GregorianCalendar();
Calendar cal2 = new GregorianCalendar();
cal1.set(2008, 8, 1);
cal2.set(2008, 9, 31);
System.out.println("Days= "+daysBetween(cal1.getTime(),cal2.getTime()));
}
public int daysBetween(Date d1, Date d2){
return (int)( (d2.getTime() - d1.getTime()) / (1000 * 60 * 60 * 24));
}
}
将它合并到您的代码中应该没有问题,这样它就能满足您的需求。代码取自here。