2013-10-04 5 views
0

Я разборе дату Backoffice (С #) \\/Date\\((\\d+)([-+]\\d+)?\\)\\/ с org.joda.time.DateTimeSimpleDateFormat ParseException в некоторых устройствах

Пример:
1 - дата БО = /Дата (1380891215020 + 0100)/
2 - DateTime БО дата разобран = 2013-10-04T12: 53: 35,020 + 01: 00
3 - Calendar.setTime (DateTime BO дата разобран) = Пт 4 октября 12:53:35 GMT + 01: 00 2013
4 - String finalDate = Календарь. GetTime() ToString(). = Пт. 04 окт. 12:53:35 GMT + 01: 00 2013

На данный момент все прошло нормально. Теперь я хочу сделать сравнение даты так:

Date dateA = mySimpleDateFormat.parse(finalDate); 
Calendar cal = Calendar.getInstance(); 
cal.setTime(dateA); 
... 

Когда я использую mySimpeDateFormat для разбора finalDate в некоторых устройствах с

java.text.ParseException: дата не поддается синтаксическому анализу: «Пт 4 октября 12:53 : 35 ЗАПАД 2013" (по смещению 20)»

брошено HTC Один S является одним из устройств
что 444480073162755231496045888.. 8

Телефон Дата & Настройки времени:
- Автоматическая Дата & время: истинный
- Автоматический часовой пояс: ложные


Любая идея, почему там WEST вместо GMT + 01: 00?
Спасибо за ваше время.

ответ

0

Нашли решение!
Прежде всего, спасибо за ваши ответы.

Я забыл сказать, что мой Locale был Locale.ENGLISH, но проблема не была там, это было на шаге 4:

String finalDate = mySimpleDateFormat.format(Calendar.getTime()); 

вместо

String finalDate = Calendar.getTime().toString(); 

Теперь я всегда есть формат даты, такой как Пт Окт 04 12:53:35 GMT + 01: 00 2013 и все работает отлично;)
Спасибо!

1

Может возникнуть проблема с локалью устройства (речь идет о языке и времени). строка finalDate, очевидно, является временной меткой на английском языке, вы можете не использовать устройство.

1

У меня была аналогичная проблема. Вместо этого используйте Calendar cal = Calendar.getInstance(Locale.US);. На некоторых устройствах локаль не является США и Calendar.getInstance() возвращает Calendar в каком-либо другом регионе. То же самое касается SimpleDateFormat, попробуйте использовать mySimpleDateFormat = new SimpleDateFormat(format, Locale.US);.

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