Прежде чем кто-либо проголосует против этого вопроса, я просмотрел Интернет и StackOverflow, чтобы узнать о ситуации, с которой столкнулся, и ничего не нашел, поэтому пишу как новый вопрос.
У меня ситуация с датой и часовыми поясами Java.
Ситуация:
Есть 2 сервера в 2 разных часовых поясах, скажем, PST и CST. Я получаю dateString (дата в виде строки) с этих серверов. Но когда я пытаюсь преобразовать строку обратно в дату, используя SimpleDateFormat, информация о дате (год, месяц, день, часы, минуты, секунды) преобразуется правильно. Но информация о часовом поясе не сохраняется.
Если я запускаю свой код на сервере в EST, pstDateString преобразуется в формат даты, но для часового пояса устанавливается значение EDT вместо PST.
Я думал об этом по-разному, но, может быть, я напряжен, я не могу найти решение. Любая помощь ?
Блок кода, который бы имитировал ситуацию:
DateFormat outDF1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS");
outDF1.setTimeZone(TimeZone.getTimeZone("PST"));
String pstDateString = outDF1.format(new Date());
DateFormat outDF2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS");
outDF2.setTimeZone(TimeZone.getTimeZone("CST"));
String cstDateString = outDF2.format(new Date());
System.out.println("pstDateString "+pstDateString);
System.out.println("cstDateString "+cstDateString);
Date cstDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS").parse(cstDateString);
Date pstDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS").parse(pstDateString);
System.out.println("Date after format from string: "+pstDate);
System.out.println("Date after format from string: "+cstDate);
Вывод в настоящее время:
pstDateString 2012-06-07 10:26:689
cstDateString 2012-06-07 12:26:694
Date after format from string: Thu Jun 07 10:26:00 EDT 2012
Date after format from string: Thu Jun 07 12:26:00 EDT 2012
Ожидаемый результат:
pstDateString 2012-06-07 10:26:689
cstDateString 2012-06-07 12:26:694
Date after format from string: Thu Jun 07 10:26:00 PST 2012
Date after format from string: Thu Jun 07 12:26:00 CST 2012
s
в SimpleDateFormat, а прописные буквыS
— это миллисекунды. - person Tom Anderson   schedule 07.06.2012