2015-02-08 5 views
1

В приведенном ниже коде я пытаюсь получить формат даты для PST по часовой стрелке, но я не получил ожидаемый результат. Но, если я раскомментирую 2 строки (часовой пояс setDefault), я получаю ожидаемые результаты.Java - Не получается отметка времени для определенного часового пояса

У вас есть хороший выбор?

System.out.println("TimeZone.getDefault():"+TimeZone.getDefault()); // CST 
    //TimeZone.setDefault(TimeZone.getTimeZone("PST")); 
    Calendar cal = java.util.Calendar.getInstance(SimpleTimeZone.getTimeZone("PST")); 
    //Calendar cal = java.util.Calendar.getInstance(); 
    Date c = cal.getTime(); 
    String out = new java.text.SimpleDateFormat("MMMMMddyyyy").format(c); 
    System.out.println("out:"+out); 

Если текущая дата в КНТ February082015 (ночью 12 до 2 часов утра), то ожидаемый результат для PST будет February072015 (PST является 2ч за CST). Но я получаю вывод в феврале082015.

+0

Каков ожидаемый результат? Каков результат, который вы получаете? – sashwat

+0

Если текущая дата в КНТ составляет февраль082015 (ночью от 12 до 1 часа ночи), то ожидаемым выходом для PST будет февраль072015 (PST составляет 2 часа после КНТ). Но я получаю вывод в феврале082015. –

ответ

1

Ваш DateFormat не наследует TimeZone от Calender. Чтобы продемонстрировать, я добавил Z (который отображает смещение временной зоны). Запустите его с установкой TimeZone и без нее, и будет описано ваше поведение

DateFormat df = new SimpleDateFormat("MMMMMddyyyy Z"); // <-- The Z is TZ 
df.setTimeZone(SimpleTimeZone.getTimeZone("PST")); // <-- Add/Remove this 
String out = df.format(c); 
+0

Thx для ответа. На самом деле, я не хочу менять формат. Я получаю «выход: February082015 -0600» в качестве вывода, если я запустил выше. –

+0

Это PST. Затем удалите Z. –

+0

Я не заметил часовой пояс, установленный в объекте dateformat. –

Смежные вопросы