Cтранный (или неочевидный) Gregoriancalendar

Тема в разделе "Java", создана пользователем -, 8 май 2008.

  1. Гость

    я не понимаю, каким образом можно поставить дату в Григорианский календарь. Вот смотрите:
    Код (Text):
    private Date fromStringToDate(String strDate)
    {
    StringTokenizer tokenizer = new StringTokenizer(strDate, ".");
    GregorianCalendar calendar = new GregorianCalendar(1918, Calendar.JANUARY, 1);
    String str1 = tokenizer.nextToken();
    String str2 = tokenizer.nextToken();
    String str3 = tokenizer.nextToken();
    //      calendar.setTime(new Date(Integer.parseInt(str3), Integer.parseInt(str2), Integer.parseInt(str1)));
    //      calendar.set(Integer.parseInt(str3), Integer.parseInt(str2), Integer.parseInt(str1));
    calendar.set(GregorianCalendar.DAY_OF_MONTH, Integer.parseInt(str1));
    calendar.set(GregorianCalendar.MONTH, Integer.parseInt(str2));
    calendar.set(GregorianCalendar.YEAR, Integer.parseInt(str3));
    String str = calendar.getTime().toString();
    return calendar.getTime();
    }
    на вход подается строка в виде: 6.04.2008. токенайзер ее разбивает на кусочки, в моем случае на 6, 4, 2008.
    день ставится, месяц остается текущий (т.е. май), это во-первых.
    дальше у меня String str - строка просто для того, чтобы убедиться, что getTime вернул дату. дальше из ф-ии возвращаю calendar.getTime(). Упс, возвращает null, это во-вторых. ПОЧЕМУ???? Ведь я убедилась строкой выше, что str заполняется датой.

    причем закомментированные варианты приводят к тому же результату
     
  2. Creo

    Creo Гость

    Код (Text):
    import java.util.Date;
    import java.util.GregorianCalendar;
    import java.util.StringTokenizer;

    public class Test {
    private static Date fromStringToDate(String strDate)
    {
    StringTokenizer tokenizer = new StringTokenizer(strDate, ".");
    GregorianCalendar calendar = new GregorianCalendar(1918, [b]GregorianCalendar[/b].JANUARY, 1);
    String str1 = tokenizer.nextToken();
    String str2 = tokenizer.nextToken();
    String str3 = tokenizer.nextToken();
    //      calendar.setTime(new Date(Integer.parseInt(str3), Integer.parseInt(str2), Integer.parseInt(str1)));
    //      calendar.set(Integer.parseInt(str3), Integer.parseInt(str2), Integer.parseInt(str1));
    calendar.set(GregorianCalendar.DAY_OF_MONTH, Integer.parseInt(str1));
    calendar.set(GregorianCalendar.MONTH, Integer.parseInt(str2));
    calendar.set(GregorianCalendar.YEAR, Integer.parseInt(str3));
    String str = calendar.getTime().toString();
    return calendar.getTime();
    }

    public static void main(String[] args) {
    Date date=fromStringToDate("6.04.2008");
    System.out.println(date);
    }

    }
    У меня в таком виде всё нормально работает. Проверял....
     
Загрузка...

Поделиться этой страницей