2014-10-03 5 views
0

Мне нужно реализовать логику, является ли вводная дата, например SEP 2014, OCT 2014, NOV 2014 и т. Д. Текущим месяцем или нет. Я написал ниже логики для проверки выбранной недели, является ли текущая неделя или не используя ниже метод, но не в состоянии осуществить за текущий месяцДата даты Java Дата преобразования как строка St октября Oct 2014

public static boolean isCurrentWeek(Date date, Date dateStart, Date dateEnd) 

{ 

    if (date != null && dateStart != null && dateEnd != null) { 


     if(date.equals(dateStart) || date.equals(dateEnd)){ 


      return true; 


     }else if (date.after(dateStart) && date.before(dateEnd)) { 


      return true; 


     } 


     else { 


      return false; 

     } 

    } 
    return false; 
} 
+1

У вас есть код текущей недели, и вы пытаетесь выяснить версию текущего месяца, что вы пробовали до сих пор? Сообщение * тот * код. – rolfl

ответ

0

Я думаю, вы можете решить проблему с кодом, подобный этому:

String target = "Oct 2000"; 
DateFormat df = new SimpleDateFormat("MMM yyyy", Locale.ENGLISH); 
try{ 
    Date date = df.parse(target); 
    Calendar calendar = Calendar.getInstance(); 
    Calendar targetCalendar = Calendar.getInstance(); 
    targetCalendar.setTime(date); 
    System.out.println(targetCalendar.get(Calendar.MONTH) == calendar.get(Calendar.MONTH)); 
} catch (ParseException e){ 
} 

Строка target Ваш вход как «Сен 2014" . Эта строка анализируется на Date, а затем используется для установки времени в объекте Calendar. Второй Calendar содержит текущее время. Проверка того, совпадают ли каландры обоих по месяцу, - это вызов System.out.println.

+0

Stefan, ваш код проверяет только месяц, но не год, например, если я передаю String target = «Oct 2000» и текущий месяц - OCT 2014, его значение вернется. Он также должен сравнить год –

+0

. Я изменил ваше значение, как показано ниже, и его рабочий класс public public boolean isCurrentMonth (String dateStart) выбрасывает ParseException { \t \t DateFormat df = new SimpleDateFormat («MMM yyyy», Locale.ENGLISH); \t \t Дата date = df.parse (dateStart); \t \t Календарь calendar = Calendar.getInstance(); \t \t Календарь targetCalendar = Calendar.getInstance(); \t \t targetCalendar.setTime (дата); \t \t \t \t возврата (targetCalendar.get (Calendar.MONTH) == calendar.get (Calendar.MONTH) && targetCalendar.get (Calendar.YEAR) == calendar.get (Calendar.YEAR)); \t} –

+0

В своем вопросе вы просите только о матче за месяц (вы написали: «текущий месяц или нет»). Как вы уже знаете, код может быть легко расширен, чтобы проверить также на год :) Итак, я думаю, что это решение работает для вас, пожалуйста, проголосуйте. –

1

Попробуйте Apache Commons для этого:

DateUtils.truncatedEquals(date, new Date(), Calendar.MONTH); 

возвращает true, если две даты указаны в том же месяце.

EDIT

Может быть, это:

public static boolean isInCurrentMonth(String inputDateString) { 
    SimpleDateFormat sdf = new SimpleDateFormat("MMM yyyy", Locale.ENGLISH); 
    try { 
     Date inputDate = sdf.parse(inputDateString); 
     return DateUtils.truncatedEquals(new Date(), inputDate, Calendar.MONTH); 
    } catch (ParseException e) { 
     // error handling 
    } 
} 
+0

У меня есть две даты на моем календаре, startDate = "OCT 2014", а end Date тоже то же самое, поэтому я получаю это значение в String, но не могу понять, как получить первый и последний выбранный месяц –

+0

Основным вопросом я должен проверить, находится ли сегодня дата между датой начала и датой окончания месяца. но поскольку я получаю строку OCT 2014 в качестве даты начала и окончания даты, я не могу разобрать ее на формат даты –