2014-12-02 4 views
0

ОК, поэтому я использовал некоторые сообщения в stackoverflow, чтобы получить полузаработку преобразования для некоторых XML-данных.GMT неверное преобразование в 12:00

В фиде данных XML я получаю дату и время, поскольку элементы SEPARATE - они находятся в GMT.

Так что для того, чтобы преобразовать его и сравнить с местным временем, я делаю следующее («пе» содержит мой объект из кормов XML):

SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy HH:mm"); 
sdf.setTimeZone(TimeZone.getTimeZone(myTimeZone.getDisplayName())); 

Date newdate = sdf.parse(ne.getNewsDate().toString() + " " + ne.getNewsTime().toString()); 

if (newdate.before(new Date())) 
    //don't use 
else 
    //use 

Так как пример дату/время от подачи XML, который ошибочно конвертерной, давайте:

<date> 
<![CDATA[ 12-02-2014 ]]> 
</date> 
<time> 
<![CDATA[ 12:00am ]]> 
</time> 

«newdate» выше возвращается «вт 2 декабря 23:00:00 AEDT 2014», когда моя система читает часы 2/12/2014 3:00 PM « Так ясно, что он конвертирует время по Гринвичу 12-02-2014 12:00, неправильно, как время в футу но мне нужно, чтобы понять, что это в прошлом.

Итак, я смущен тем, что он правильно преобразует для MOST дату/время из фида, но некоторые из них, как указано выше, неверны.

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

ответ

1

HH is the date format for 24-hour dates,, и вы не передали маркер маркера am/pm в строке формата даты. Попробуйте следующее:

SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy hh:mma"); 

N.B.SimpleDateFormat может не распознать в нижнем регистре ("am") как "AM" для AM/PM маркер, так что вы может необходимости вызывать String#toUpperCase():

Date newdate = sdf.parse(ne.getNewsDate().toString() + " " + ne.getNewsTime().toString().toUpperCase()); 
+0

человек Я люблю этот сайт! ответы на месте и своевременно! Thx - мне не нужен toUpperCase, просто hh: mma Perfect! – makapaka

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