java - 将字符串数组添加到日历数组中

标签 java arrays calendar simpledateformat

基本上我需要从数据库中获取一个动态字符串数组(它将从数据库中填充,但在本例中它只是用于测试目的的固定大小),将其转换为日历数组以便我可以将其与当前日期迭代以查看它是否等于星期六/星期日或新创建的日历数组中的任何日期。

我的问题是日历数组没有被正确填充,因为当 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/

相关文章:

javascript - 查找包含数字的子数组的索引

java - byte[] byteArray = anotherByteArray 的作用是什么?

java - ical解析器android

java - 为什么Java会在这种情况下将double类型转换为float类型呢?

Java 和 PostgreSQL 存储过程 - 返回注册为输出参数,导致输入参数出现问题

java - 为什么这个程序打印25? (Java继承)

c++ - 使用 Memcpy 扩大指针数组的大小

java - Lombok + QueryDsl + Mapstruct : error compiling: java. lang.NoClassDefFoundError : javax/persistence/Entity: javax. persistence.Entity

android - 在 native 日历 View 中突出显示事件日期

wpf 工具包日历,将所选日期显示为今天