Работа с датами

#java #mysql #datetime

#java #mysql #дата-время

Вопрос:

Я вычитаю две даты друг из друга, потому что мне нужна разница во времени между ними. Я переключаю обычные проблемы, но когда я записываю это в MySQL (время) Я вижу, что разница в 1 час всегда слишком велика. Если я ожидаю разницы в 2 минуты, я получаю 1 час 2 минуты. Теперь я думаю, что это проблема с часовым поясом, но есть ли способ решить это …?

 Date totalDate = visit.getTotalTime(); 
Date visitDate = visit.getVisitTime(); 
java.sql.Time sqlTotalTime = new java.sql.Time(totalDate.getTime() - visitDate.getTime()); 
ps.setTime(4, sqlTotalTime); 
  

дает разницу в 1 час 2 секунды, а не в 2 секунды:

 08/Dec/2010:07:27:54 
08/Dec/2010:07:27:52 
  

Спасибо.

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

1. Возможно, соответствующий фрагмент кода поможет кому-нибудь высказать идеи

2. Я понятия не имею, что означает «я переключаю обычные проблемы»?

3. «Переключать обычные проблемы»? Определенно требуется гораздо больше деталей.

4. Дата totalDate = visit.getTotalTime(); Дата visitDate = visit.getVisitTime(); java.sql.Time sqlTotalTime = новый java.sql.Time (totalDate.getTime() — visitDate.getTime()); ps.setTime(4, sqlTotalTime); 08 / Dec/2010:07:27:54 08/ Декабрь / 2010:07:27:52 дает разницу в 1 час 2 секунды, а не в 2 секунды

5. @Darth Blue Ray: пожалуйста, отредактируйте свой пост и вставьте приведенный выше комментарий в виде блока кода

Ответ №1:

Вы не объясняете, как именно вы вычитаете две даты или в чем, по вашему мнению, заключаются «обычные проблемы».

Чтобы получить разницу во времени между двумя датами, вы можете вызвать getTime() для них обеих, чтобы получить количество миллисекунд с 01-01-1970 00:00:00 GMT, а затем вычесть эти два значения:

 long differenceInMilliseconds = date1.getTime() - date2.getTime();
  

Конечно, если вы хотите разницу в секундах, минутах, часах и т.д., То разделите это значение на соответствующий коэффициент.

Обратите внимание, что java.util.Date объект сам по себе не содержит никакой информации о часовых поясах.

редактировать (после вашей правки) Похоже, вы пытаетесь сохранить разницу во времени в столбце типа TIMESTAMP или что-то подобное. Не делайте этого; ВРЕМЕННЫЕ МЕТКИ и т.д. Предназначены для значений времени, а не для значений разницы во времени. Просто сохраните разницу во времени в числовом столбце.

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

1. Я отредактировал свой пост… итак, мне нужно добавить информацию о моем часовом поясе, который я использую?

2. верно … проблема в том, что я застрял со ВРЕМЕНЕМ в MySQL… Я как бы «вынужден» его использовать….

3. @Darth Blue Ray — тогда, я думаю, вы должны «извинить» это, указав, что схема базы данных неработоспособна для того, кто ее разработал.