2013-09-09 4 views
0

Недавно я работаю с SimpleDateFormat и столкнулся с интересной проблемой (см код ниже):Автоматическое преобразование Java Timezone?

Sample sampleOne = new Sample(): 
sampleOne.date = new SimpleDateFormat("yyyyMMdd").parse("19880428"); 
Sample sampleTwo= new Sample(): 
sampleOne.date = new SimpleDateFormat("yyyyMMdd").parse("19881225"); 

Дата в sampleOne отображается BST, а дата sampleTwo, отображаемая в GMT. Может кто-нибудь объяснить это?

+0

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

+1

Как вы показываете даты? Обратите внимание, что 28 апреля в летнее время, а 25 декабря - в зимнее время. – Jesper

+0

В основном я использовал отладчик, чтобы посмотреть на значение, и я увидел, что дата sampleTwo - это Sun Dec 25 00:00:00 GMT 1988, а вторая - 28 апреля 00:00:00 BST 1988 – xcoder

ответ

0

Я думаю, используемая по умолчанию локали "часовой пояс Europe/London",

В летнее время, Лондон в Великобритании летнее время (BST) часовой пояс. Зимой он находится в часовой пояс GMT. Вот почему вы получаете разные результаты.

+0

О да! Я такой идиот! GMT - это часовой пояс для Великобритании зимой! Спасибо огромное! – xcoder