Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




> Cтранный (или неочевидный) Gregoriancalendar
госик
Вставить ник
сообщение 7:05:2008, 20:36
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 57
Регистрация: 10:10:2006
Пользователь №: 7 035
Специализация: разработка ПО, внедренец



Репутация: - 0 +


я не понимаю, каким образом можно поставить дату в Григорианский календарь. Вот смотрите:
Код
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 заполняется датой.

причем закомментированные варианты приводят к тому же результату
Подняться вверх 
 
Сообщение #1
 
Новая тема 
Ответов (1 - 1)
Creo
Вставить ник
сообщение 13:05:2008, 12:22
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 34
Регистрация: 2:11:2006
Пользователь №: 7 523



Репутация: - 0 +


Код
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);
    }

}


У меня в таком виде всё нормально работает. Проверял....
Подняться вверх 
 
Сообщение #2


Быстрый ответ  Ответить  Новая тема 

> Быстрый ответ
Полужирный
Курсив
Подчеркнутый
Вставить изображение
Смайлики
Цитата
Код
 
 Отправлять уведомления об ответах на e-mail |  Включить смайлики |  Добавить подпись
   

 

RSS Текстовая версия Сейчас: 16:05:2008 - 17:47
с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net