一段时间以来一直在与这个问题搏斗,会喜欢一些输入。拉一天中某一天的特定日期的所有日期 - Java
我想解决的问题是收集某一特定年份的所有日期,例如2014年的每个星期二。这些日期存储在ArrayList<Date>
中。这个列表然后返回。
还必须验证以确保年份不是0,并且提交的星期几必须是1-7之间的数字。
如果有任何问题,我很想知道我搞砸了什么。
public List<Date> getDatesforDayOfWeek(int year, int dayOfWeek) throws InvalidDateException, ParseException {
List<Date> dateList = new ArrayList<>();
if (year <= 0 || (1 > dayOfWeek && dayOfWeek > 7)) {
throw new InvalidDateException("Year or day of week is invalid.");
} else {
Calendar newCal = Calendar.getInstance();
newCal.set(YEAR, year);
newCal.set(DAY_OF_YEAR, 1);
while (newCal.get(YEAR) < year + 1) {
int currentDayOfWeek = newCal.get(DAY_OF_WEEK);
Date newDate = null;
if (currentDayOfWeek >= dayOfWeek) {
int dayOfMonth = newCal.get(DAY_OF_MONTH);
String strDayOfMonth = String.valueOf(dayOfMonth);
String strYear = String.valueOf(year);
DateUtility d1 = new DateUtility();
Date passDate = newCal.getTime();
String weekDay = d1.getWeekDayNameAbbreviation(passDate);
String monthAbbreviation = d1.getMonthAbbreviation(passDate);
String finalString = new String();
finalString.concat(weekDay).concat(" ").
concat(monthAbbreviation).concat(" ").
concat(strDayOfMonth).concat(" ").
concat(strYear);
SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd YYYY");
Date theDate = format.parse(finalString);
dateList.add(theDate);
}
newCal.add(Calendar.DATE, 1);
}
}
return (dateList);
}
开始与当年的第一个星期二,并不断添加'7'天,直到你看到今年 – 2014-09-03 17:18:57
的变化@JigarJoshi我认为同样的事情,但也许是TC担心几年如1582? – Durandal 2014-09-03 17:27:23
1582 @Durandal的特别之处是什么? – 2014-09-03 17:29:04