2016-11-03 4 views
-2

Мне нужно сравнить текущую дату с датой истечения срока действия карты в формате MM/yy с использованием метода Calendar.after(). (Я не могу использовать Java 8 с новыми классами обработки по дате).Сравните дату истечения срока действия карты в java. Конец века?

Чтобы соответствовать годам, я использую SimpleDateFormat.set2DigitYearStart(firstYearOfCurrentCentury).

Так это работает отлично, но позволяет предположить, что мое приложение будет использоваться в 2099 году, поэтому срок действия карты может превратиться в MM/02 поэтому это значение будет больше, то текущий 2099 год, но приложение будет по-прежнему думаю, что это 2002.

Какова хорошая практика для обработки этой ситуации, если мы не знаем условия действия карты и формат по-прежнему MM/yy?

Заранее благодарим за ответ.

+2

Просто заработайте, какой век вы ближе (текущая дата), и используйте это как базовую линию – musefan

ответ

0

Я нашел решение для сравнения не дат, а строк лексикографически. Вам просто нужно сравнить год сперва, потом месяцы и неспециализированный компаратор, где 0> 9.

public static boolean compareCardExpDateLexicographically(String dateToCompare) { 
    SimpleDateFormat sdf = new SimpleDateFormat("yy/MM", Locale.US); 
    Date date = new Date(); 
    String currentDate = sdf.format(date); 
    String dateToComp = sdf.format((parseCardExpiryDate(dateToCompare)).getTime()); 

    Comparator<String> comp = new Comparator<String>() { 
     @Override 
     public int compare(String o1, String o2) { 

      if (o1.compareTo(o2) == 9) return -1; 
      else if (o1.compareTo(o2) == -9) return 1; 
      else if (o1.compareTo(o2) > 0) return 1; 
      else if (o1.compareTo(o2) == 0) return 0; 
      else return -1; 
     } 
    }; 

    return comp.compare(dateToComp, currentDate) >= 0; 
} 
2

Если у вас есть данные, такие как Дата создания карты, вы также можете сравнить с ней, думая, что у вас есть срок годности карты ограничения> = дата создания карты.