找到最后一个付款日期
问题描述:
我已经写了这个简单的方法来给我每个支付期的日期,并且从1月1日起停止工作。我真的不确定这里有什么问题。它不会返回任何东西。找到最后一个付款日期
public static List<Date> getPayPeriodDatesSinceStartOfYear() {
Calendar cal = new GregorianCalendar();
cal.add(Calendar.WEEK_OF_YEAR, 1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
cal.set(Calendar.WEEK_OF_YEAR, 2);
Calendar currentDate = new GregorianCalendar();
currentDate.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
int counter = 2;
List<Date> dates = new ArrayList<Date>();
while ((cal.getTime().compareTo((currentDate.getTime())) <= 0)) {
dates.add(cal.getTime());
counter += 2;
cal.set(Calendar.WEEK_OF_YEAR, counter);
}
java.util.Collections.reverse(dates);
if(dates.isEmpty()){
JOptionPane.showMessageDialog(null, "NO DATES, SOMETHING IS WRONG!");
}
return dates;
}
答
你而条件未得到满足,你有它设置cal
大于currentDate
因此while循环从未发生过的方式。
答
Calendar cal = new GregorianCalendar();
cal.add(Calendar.WEEK_OF_YEAR, 1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
cal.set(Calendar.WEEK_OF_YEAR, 2);
为什么你将周设置为1然后设置为2?
(cal.getTime().compareTo((currentDate.getTime())) <= 0)
请参阅文档Date
。它有像before(Date when)
和after(Date when)
的方法。
运行时弹出消息对话框吗? – Mitch 2012-01-04 19:14:27
是的,它弹出来了,我想我所做的只是在去年年中工作。 – davidahines 2012-01-04 19:24:39
'getPayPeriodDatesSinceStartOfYear()'。顾名思义,我认为你必须在第二周后运行它。因为,这是第一周,今年还没有支付期。 – 2012-01-04 19:27:22