код:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss z");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(new Date());
try {
String d = sdf.format(new Date());
System.out.println(d);
System.out.println(sdf.parse(d));
} catch (Exception e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
Выход:
Thu Aug 08 17:26:32 GMT+08:00 2013
2013.08.08 09:26:32 GMT
Thu Aug 08 17:26:32 GMT+08:00 2013
Обратите внимание, что format()
корректно форматирует Date
на GMT, но parse()
потерял данные GMT. Я знаю, что могу использовать substring()
и обойти это, но в чем причина этого феномена?
Вот дублированный вопрос, который не имеет ответов.
Изменить: Позвольте мне задать вопрос по-другому, каков способ получить объект Date, чтобы он всегда находился в GMT?