Я вношу изменения в код, который работает на unix-боксе. Он устанавливает время для поля в базе данных на основе текущей даты и времени для Лондона.Java Дата и время
Методы, которыми я пользуюсь, следующие:
private static Date getCurrentTime() {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd-kk:mm:ss.SSS");
format.setTimeZone(TimeZone.getTimeZone("Europe/London"));
Calendar cal = Calendar.getInstance();
Date currentDate = cal.getTime();
try {
return format.parse(format.format(currentDate));
} catch (ParseException e) {
log.error("Error occured while parsing date-->" + e.getMessage());
}
return new Date();
}
private String getStringFromDate(Date date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd-kk:mm:ss.SSS");
return sdf.format(date);
}
Когда сообщение обрабатывается приложением Java на поточной UNIX поле (который установлен в северной америке время как тот, где он размещен), а затем, когда она вставлена в базу данных это час меньше, чем (не устанавливается в BST).
Если я запустил тот же код в Eclipse на своем рабочем столе, я получаю нужное время в базе данных.
Я не уверен, что может вызвать эту проблему, и надеялся, что кто-то сможет помочь.
Благодаря
редактировать *** на второй взгляд, даже файлы журналов на поле Юниксовые час позади, так на этой основе я взять на себя UNIX, вызвавшего проблему отличие от моего кода.
«Вы должны хранить свои даты в db в UTC» <- вряд ли так, если вы это сделаете, вы потеряете информацию о часовом поясе; более того, до 1970 года, 1 января, полночь GMT вы обречены – fge
@fge - если вам нужен часовой пояс _original_, тогда да, вы также должны сохранить это. как это противоречит тому, что я сказал. сохранение дат в UTC не влияет на то, нужно ли хранить часовой пояс. то, что вы говорите, применяется только в том случае, если вы сохраняете свои даты в db в тексте. Я принимал столбец даты/времени. – jtahlborn
ОК, справедливо. Я неправильно истолковал ваш ответ, извините – fge