将String解析为Calendar对象

时间:2015-03-08 19:47:56

标签: java string date simpledateformat date-formatting

我无法将包含MONTH和DAY信息的字符串解析为日期对象。通过其他线程,我决定使用SimpleDateFormatter。这是我的代码:

void checkDay(Calendar now) {
    Calendar cal = Calendar.getInstance(now.getTimeZone());
    for (String holiday : usHolidayList) {
        Date holidayDate = null;
        try {
            holidayDate = new SimpleDateFormat("MM/DD").parse(holiday);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        checkNotNull(holidayDate);
        cal.setTime(holidayDate);
        if (now.get(Calendar.MONTH) == cal.get(Calendar.MONTH) && now.get(Calendar.DAY_OF_MONTH) == cal.get(Calendar.DAY_OF_MONTH)) {
            return true;
        }
    }
    return false;
}

usHolidayList就像 - > “01/01”,05/25“仅包含MONTH和DAY信息。我只需要获得05/25并将其转换为日期。我不关心年份或时间组件。

使用我当前的代码,DAY似乎正确解析,但MONTH始终设置为1月。

Thu Jan 01 00:00:00 UTC 1970
Sun Jan 25 00:00:00 UTC 1970

我期待它     Thu Jan 01 00:00:00 UTC 1970     Sun May 25 00:00:00 UTC 1970

真的很感激一些想法。

1 个答案:

答案 0 :(得分:0)

我弄清楚我做错了什么。这是SimpleDateFormatter中的模式 holidayDate = new SimpleDateFormat(“MM / DD”)。parse(holiday);

应该是: holidayDate = new SimpleDateFormat(“MM / dd”)。parse(holiday);

DD - 一年中的一天 dd - 一个月中的一天(这就是我想要的) 由于我的所有日​​期都在30以内,所以我相信它会落到1月份。