#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 — тогда, я думаю, вы должны «извинить» это, указав, что схема базы данных неработоспособна для того, кто ее разработал.