Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / проверка корректности даты / 10 сообщений из 10, страница 1 из 1
15.09.2005, 18:24
    #33272090
ozzka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка корректности даты
Прошу помощи. Входным параметром является строка, где должна быть дата, типа "01.09.2005". Надо убедиться, что это действительно дата. Нижеприведенный код ест и такие даты "31.09.2005" и "01.13.2005" - он их просто переводит в "01.10.2005" и "01.01.2006". Как мне вывалиться в ошибку при таком вводе?

public static String reformatDate(String dateString) {
try {
Calendar calendar = new GregorianCalendar();
calendar.setTime(new SimpleDateFormat("dd.MM.yyyy").parse(dateString));
return "ok";
}
catch (Exception e) {
return "error";
}
}

---------
читала про ParsePosition, но, к сожалению, ничего не поняла, с Java только знакомлюсь
...
Рейтинг: 0 / 0
15.09.2005, 18:29
    #33272099
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка корректности даты
выделить составляющие и проверить самостоятельно


-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
15.09.2005, 18:31
    #33272103
ozzka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка корректности даты
Deadyвыделить составляющие и проверить самостоятельно


-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
получается, что возможна только ручная проверка?
...
Рейтинг: 0 / 0
15.09.2005, 18:44
    #33272132
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка корректности даты
http://java.sun.com/j2se/1.5.0/docs/api/java/util/Calendar.html#setLenient(boolean)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
 public   class  Test {

   public   static   void  main(String[] args)
     throws  Exception {
    System.out.println(isValid("01.01.2005", "dd.MM.yyyy"));
    System.out.println(isValid("01.13.2005", "dd.MM.yyyy"));

  }

   static   boolean  isValid(String value, String datePattern) {

     if  (value ==  null  || datePattern ==  null  || datePattern.length() <=  0 ) {
       return  false;
    }

    SimpleDateFormat formatter =  new  SimpleDateFormat(datePattern);
    formatter.setLenient(false);

     try  {
      formatter.parse(value);
    }  catch  (ParseException e) {
       return  false;
    }
     return  true;
  }

}
...
Рейтинг: 0 / 0
15.09.2005, 18:44
    #33272133
fplab
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка корректности даты
Например, так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
    // Проверить допустимость введенной даты
     boolean  isValidDate (String inputValue) {
        Calendar cal =  new  GregorianCalendar ();
        cal.setLenient (false);
        cal.clear ();
        // Разобрать строку на три составляющие (день, месяц, год)
         try  {
             int  d = Integer.parseInt (inputValue.substring ( 0 ,  2 ));
             int  m = Integer.parseInt (inputValue.substring ( 3 ,  5 ));
             int  y = Integer.parseInt (inputValue.substring ( 6 ,  10 ));
            cal.set (y, m -  1 , d);
            java.util.Date dt = cal.getTime ();
             return  true;
        }
         catch  (NumberFormatException nfe) { return  false;}
         catch  (IllegalArgumentException iae) { return  false;}
    }
...
Рейтинг: 0 / 0
15.09.2005, 18:52
    #33272141
Penkov Vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка корректности даты
Denis
> http://java.sun.com/j2se/1.5.0/docs/api/java/util/Calendar.html#setLenient(boolean)

> public class Test {public static void main(String[] args)throws
> Exception { System.out.println(isValid("01.01.2005",
> "dd.MM.yyyy")); System.out.println(isValid("01.13.2005",
> "dd.MM.yyyy"));
> }static boolean isValid(String value, String datePattern) {if
> (value == null || datePattern == null || datePattern.length() <= 0)
> {return false; }

> SimpleDateFormat formatter =new
> SimpleDateFormat(datePattern); formatter.setLenient(false);try {
> formatter.parse(value);
> }catch (ParseException e) {return false; }return true; }

> }

так и думал, что этот метод нужен. просто в javadoc смутно как-то он
описан.


-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
15.09.2005, 18:58
    #33272151
ozzka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка корректности даты
Denis Popov http://java.sun.com/j2se/1.5.0/docs/api/java/util/Calendar.html#setLenient(boolean)
...
==> formatter.setLenient(false);
...

Спасибо огромное, поняла и сделала
...
Рейтинг: 0 / 0
15.09.2005, 18:59
    #33272155
ozzka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка корректности даты
fplab...
спасибо
...
Рейтинг: 0 / 0
08.12.2005, 16:18
    #33425543
GMax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка корректности даты
В приведенном Денисом примере, ставлю форматер "dd.mm.yyyy".
Мне нужно, чтобы при проверке не пропускались варианты типа "1.3.2005", а пропускались только "01.03.2005". Это можно сделать штатными средствами, или просто добавить свои доп. проверки?
...
Рейтинг: 0 / 0
08.12.2005, 16:47
    #33425641
GMax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проверка корректности даты
Сорри за тупые вопросы. Вопрос снят.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / проверка корректности даты / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]