2015-03-08 1 views
0

У меня возникли проблемы с разбором строки, содержащей ТОЛЬКО информацию о МЕСЯЦЕ и ДНЕ в объект даты. Просмотрев другие темы, я решил использовать 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 

Я ожидал, что это будет Чт 01 января 00:00:00 UTC 1970 Вс 25 мая 00:00:00 UTC 1970

Действительно оцените некоторые мысли.

ответ

0

Я понял, что я делал неправильно. Это был шаблон в SimpleDateFormatter holidayDate = новый SimpleDateFormat («MM/DD»). Parse (holiday);

Должно быть: holidayDate = new SimpleDateFormat ("MM/dd"). Parse (holiday);

DD - день в году дд - день в месяц (что я хочу) Поскольку все мои даты были в 30, он упал в январе я считаю,