2015-03-23 4 views
2

У меня есть проблема здесь. Я прошел через все связанные должности, но не смог избавиться от этой ситуации. Я пытаюсь преобразовать дату US/Pacific от строки к объекту даты:SimpleDateFormat parse всегда возвращает EDT date

SimpleDateFormat df = new SimpleDateFormat("dd-MM-yy HH:mm:SS a z"); 
df.setTimeZone(TimeZoneUtil.getTimeZone("US/Pacific")); 
String userTime = df.format(date);// User Time - Returns correct US/Pacific time 
Date userDate = df.parse(userTime); // Always returns the date in EDT 

Я понимаю, что дата не имеет свой собственный формат, но я совершенно пьян, чтобы увидеть метод синтаксического анализа возвращения времени EDT.

Мой вопрос в том, что я хочу преобразовать строку userTime в объект Date в том же формате/часовом поясе, который я установил в SimpleDateFormat. Мне нужна помощь, ребята .. отчаянно жду. Заранее спасибо

+0

_I понимаю, что дата не имеет своего собственного формата. Она также не имеет своего часового пояса. Часовой пояс является частью форматирования. –

+0

Возможный дубликат [Преобразование строки на дату с часовым поясом] (http://stackoverflow.com/questions/4203718/converting-string-to-date-with-timezone) – tzima

+0

Ваш экземпляр 'SimpleDateFormat' использует шаблон с' z ', который является общим часовым поясом [1]. Какую строку вы пытаетесь проанализировать? Это в EDT? https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html#timezone –

ответ

0

Глядя на documentation:

Анализировать
[...] Значение TimeZone может быть перезаписана, в зависимости от заданного шаблона и значение часового пояса в тексте. Любое значение TimeZone, которое ранее было установлено вызовом setTimeZone, возможно, потребуется восстановить для дальнейших операций.

Надеется, что это может помочь

+0

llGala - Спасибо за ответ. Я не вижу никакого кода, который переписывает часовой пояс. Дата, которую я хочу проанализировать, выглядит так: 23-03-15 21: 28: 232 PM PDT. Поэтому я просто хочу создать дату из этого. Обратите внимание, что часовой пояс и дата предоставляются пользователем во время выполнения. Поэтому он не может быть постоянным. –

0

java.util.Date объектов не находятся в часовом поясе. Когда вы вызываете toString, построенная строка будет находиться в локальном часовом поясе jvm.

Если вы хотите построить строку в другом часовом поясе, вам нужно либо построить новый SimpleDateFormat, либо задать часовой пояс перед форматированием.

+0

Спасибо за ответ - "23-03-15 21: 28: 232 PM PDT" Я хочу разобрать и создать дату. Я просто хочу создать объект даты, который имеет это значение. Обратите внимание, что пользователь может выбрать любую дату с любым часовым поясом, чтобы она не была постоянной. :) - –

+0

Формат даты, который вы используете, представляется правильным. Какую ценность он предоставляет? –

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