2015-03-08 62 views
0

我在解析仅包含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" 仅包含月份和日期信息,我只需要得到05/25和改造这一个日期。我不计较年或时间的组件。

随着我当前的代码,这一天似乎是正确解析但当月总是被设置为一月。

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 5月25日00:00:00 UTC 1970

真的很欣赏一些想法。

回答

0

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

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

DD - 日在一年 DD - 天在一个月内(这是我想要什么) 因为我所有的日期是在30,但掉到1月,我相信