基本上我需要从数据库中获取一个动态字符串数组(它将从数据库中填充,但在本例中它只是用于测试目的的固定大小),将其转换为日历数组以便我可以将其与当前日期迭代以查看它是否等于星期六/星期日或新创建的日历数组中的任何日期。
我的问题是日历数组没有被正确填充,因为当 while 循环将当前日期与假期集进行比较时没有考虑到它?
到目前为止,这是我的代码;
private static final String[] bankHolidays = {"25/03/2016","28/03/16","02/05/2016","20/05/2016"};
private static Set<Calendar> holidayDates;
static SimpleDateFormat sdf = new SimpleDateFormat("dd/mm/yyyy");
public static void main(String[] args) throws ParseException {
if(holidayDates == null) {
holidayDates = new HashSet<Calendar>();
Date[] hol = new Date[bankHolidays.length];
for(int i=0;i<bankHolidays.length;i++){
Date d = sdf.parse(bankHolidays[i]);
hol[i]= d;
}
for(Date day : hol) {
Calendar c = Calendar.getInstance();
c.setTime(day);
holidayDates.add(c);
}
}
比较阶段的代码是;
if (startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY && startCal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY && !holidayDates.contains(startCal.get(Calendar.DAY_OF_YEAR)) ) {
++workDays;
}
有什么建议吗?
编辑:我最终想出了办法,但促成因素之一是使用 MM 而不是 mm 来比较日期。
最佳答案
你的代码示例的固定、更清晰的版本:)(与你的 JDK5 语言水平。可以通过 java 8 流 API 进一步改进)
private static final String[] bankHolidays = {"25/03/2016", "28/03/16", "02/05/2016", "20/05/2016"};
private static final SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
private static Set<Calendar> holidayDates;
public static void main(String[] args) throws ParseException {
if (holidayDates == null) {
holidayDates = new HashSet<Calendar>();
for (int i = 0; i < bankHolidays.length; i++) {
Calendar c = Calendar.getInstance();
Date date = sdf.parse(bankHolidays[i]);
c.setTime(date);
holidayDates.add(c);
}
}
}
关于java - 将字符串数组添加到日历数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36009832/