помогите разобраться с датами
От: vsi  
Дата: 25.08.05 10:26
Оценка:
Добрый день, помогите, пожалуйста, разобраться как правильно делать и в чем причина следующей ерунды.
Дано две строки, в одной дата, в другой время.

String data = "050720"; //дата 2005г. 20 июля
String time = "072435"; // время 7:24:35

//Надо разобрать эти две строки и сохранить в БД в одно поле дату и время.
//Делаю так (Всякие try/catch я поубираю, чтобы не отвлекало):

SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");
java.util.Date entryDate = sdf.parse(data); // получается дата такая, как надо, время 0ч.0м.0с.
sdf = new SimpleDateFormat("HHmmss");
Date tm = sdf.parse(time); // получается дата 1970г. 1 янв. и время 7:24:35, т.е. все ОК
//теперь я хочу сложить дату и время, чтобы получить то что мне надо:
entryDate = new Date(entryDate.getTime() + tm.getTime() ); //в результате получается время на 2 часа меньше, т.е. меньше на мой часовой пояс (+2)

//причём если сделать так, то все ОК
Date test = new Date(entryDate.getTime() + tm.getTime() + 7200000);

HELP!
Re: помогите разобраться с датами
От: Infernal Россия  
Дата: 25.08.05 10:37
Оценка: 5 (3)
vsi>HELP!

Используй java.util.Calendar



        String data = "050720"; //дата 2005г. 20 июля
        String time = "072435"; // время 7:24:35
        SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");
        Date entryDate = sdf.parse(data); // получается дата такая, как надо, время 0ч.0м.0с.
        sdf = new SimpleDateFormat("HHmmss");
        Date tm = sdf.parse(time); // получается дата 1970г. 1 янв. и время 7:24:35, т.е. все ОК
        //теперь я хочу сложить дату и время, чтобы получить то что мне надо:
        Calendar date = Calendar.getInstance();
        date.setTime(entryDate);

        Calendar tc = Calendar.getInstance();
        tc.setTime(tm);

        date.set(Calendar.HOUR_OF_DAY, tc.get(Calendar.HOUR_OF_DAY));
        date.set(Calendar.MINUTE, tc.get(Calendar.MINUTE));
        date.set(Calendar.SECOND, tc.get(Calendar.SECOND));
        date.set(Calendar.MILLISECOND, 0);

        System.out.println("old: " + new Date(entryDate.getTime() + tm.getTime() ));
        System.out.println("date = " + date.getTime());
Re[2]: помогите разобраться с датами
От: vsi  
Дата: 25.08.05 10:45
Оценка:
Здравствуйте, Infernal, Вы писали:

vsi>>HELP!


I>Используй java.util.Calendar




Стасибо, я так попробую, а интересно почему не работает так как делал я?

П.С. кстати, если дату и время объединить в одну строку и сделать так как я делал, только за один приём с форматом "yyMMddHHmmss", то всё нормально получается тоже.
Re[3]: помогите разобраться с датами
От: Infernal Россия  
Дата: 25.08.05 11:21
Оценка:
vsi>Стасибо, я так попробую, а интересно почему не работает так как делал я?

покопай что делает SimpleDateFormat
в сторону Locale и Calendar используемых в нем.

vsi>П.С. кстати, если дату и время объединить в одну строку и сделать так как я делал, только за один приём с форматом "yyMMddHHmmss", то всё нормально получается тоже.


Прально... тут ты задаешь все
Re: помогите разобраться с датами
От: tavr  
Дата: 25.08.05 12:42
Оценка:
Здравствуйте, vsi, Вы писали:

vsi>SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");

попробуй поставить sdf.setTimeZone(TimeZone.getTimeZone("GMT"))
или используй для сложения дат Calendar
Re[3]: помогите разобраться с датами
От: tavr  
Дата: 25.08.05 12:44
Оценка:
Здравствуйте, vsi, Вы писали:

vsi>П.С. кстати, если дату и время объединить в одну строку и сделать так как я делал, только за один приём с форматом "yyMMddHHmmss", то всё нормально получается тоже.

это лучший вариант
Re[4]: помогите разобраться с датами
От: vsi  
Дата: 26.08.05 09:30
Оценка:
Здравствуйте, tavr, Вы писали:

T>Здравствуйте, vsi, Вы писали:


vsi>>П.С. кстати, если дату и время объединить в одну строку и сделать так как я делал, только за один приём с форматом "yyMMddHHmmss", то всё нормально получается тоже.

T>это лучший вариант

Да, походу лучший, я сразу его не использовал, поскольку там бывает 2 варианта, когда время есть и когда нету, но все же проще проверку поставить, чем с зонами и календарями заморачиваться.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.