Как имитировать сравнение даты со строкой, представляющей дд / мм / гггг в J2ME?

#java #java-me

#java #java-me

Вопрос:

Из строковых данных csv есть строковые данные, подобные дате, то есть строковые данные, подобные дате, имеют вид dd/mm/yyyy . Я хочу реализовать метод, который сравнивает две строковые данные, подобные дате, например, если я сравниваю два объекта Date. Как добиться этого в J2ME?

Ответ №1:

Вы можете сравнить строки, сравнив отдельные подстроки по годам, как там:

 public int compare(String date1, String date2) {
  int year = date1.substring(6).compareTo(date2.substring(6));
  if (year == 0) {
     int month = date1.substring(3,5).compareTo(date2.substring(3,5));
     if (month == 0) {
       return date1.substring(0,2).compareTo(date2.substring(0,2));
     } else {
       return month;
     }
  } else {
     return year;
  }
}
  

Это работает даже в MIDP, хотя я бы согласился, что это не решение, выигравшее какой-либо конкурс красоты.

Комментарии:

1. вы могли бы напрямую упорядочить строки в формат «ггггммдд» и сравнить их, если хотите увеличить красоту 😉

2. Однако я также подумал об этом, однако код с изменением порядка был бы одинаково уродливым. Итак, инкапсуляция — это порядок дня.

3. 1 … но это некрасиво. На самом деле я бы предпочел написать специальный метод синтаксического анализа, чтобы превратить строки в даты, а затем сравнить их. По крайней мере, таким образом вы знаете, что сравниваете действительные даты.

4. Хотя вы были правы, добавив закрывающую скобку в compareto , я считаю крайне невежливым изменять мой стиль отступов кода. Это вопрос моего личного стиля, поскольку это мой ответ. Продолжайте писать свои собственные в своем стиле, но, пожалуйста, оставьте мои в покое