一段時間以來一直在與這個問題搏鬥,會喜歡一些輸入。拉一天中某一天的特定日期的所有日期 - 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