Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 27 июн 2019, 11:15

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Парсинг даты. Что упускаю?
СообщениеДобавлено: 19 авг 2014, 10:03 
Аватар пользователя

Зарегистрирован: 09 янв 2012, 14:45
Сообщений: 2386
Откуда: Самара
Благодарил (а): 102 раз.
Поблагодарили: 321 раз.
Добрый день. С сервера приходит такая дата - "2014-08-18T13:12:56.19Z"
Надо её перевести в Date. Делаю как-то так
Код: [ Загрузить ] [ Скрыть ]
Using Java(TM) 2 Platform Standard Edition 5.0 Syntax Highlighting
  1.         String dateStr = "2014-08-18T13:12:56.19Z";
  2.         DateFormat readFormat = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ss.SSSZ");
  3.  
  4.         Date date = null;
  5.         try {
  6.             date = readFormat.parse( dateStr );
  7.         } catch (java.text.ParseException e) {
  8.             e.printStackTrace();
  9.         }
  10.  

Шаблон я взял с документации http://docs.oracle.com/javase/7/docs/ap ... ormat.html , но это не помогло, получаю ошибку
Цитата:
java.text.ParseException: Unparseable date: "2014-08-18T13:12:56.19Z" (at offset 22)

Как правильно распарсить дату?

_________________
Изображение

А тот ли ты путь выбрал, разработчик?
Хочешь знать ошибки ответ? Загляни в logcat!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Парсинг даты. Что упускаю?
СообщениеДобавлено: 19 авг 2014, 10:38 
Аватар пользователя

Зарегистрирован: 13 ноя 2013, 14:46
Сообщений: 1956
Благодарил (а): 10 раз.
Поблагодарили: 275 раз.
Для конструктора дата должна быть представленна в формате unix timestamp, т.е. колличество секунд с January 1, 1970, 00:00:00 GMT, ты просто указываешь опции форматирования. Тебе же сервер отдает уже готовую дату. Вообще -это не хороший человек сделал на сервере, но ты можешь попробовать конвертировать обратно в timestamp и потом использовать:
Код: [ Загрузить ] [ Скрыть ]
Using Java(TM) 2 Platform Standard Edition 5.0 Syntax Highlighting
  1. public class StrDateToUnixTimeStamp {
  2.  
  3.     public static void main(String args[]) {
  4.  
  5.         long unix_timestamp=strDateToUnixTimestamp("03/06/2013");
  6.         System.out.println("StringToTimestamp==" + unix_timestamp);
  7.  
  8.     }
  9.  
  10.     private static long strDateToUnixTimestamp(String dt) {
  11.         DateFormat formatter;
  12.         Date date = null;
  13.         long unixtime;
  14.         formatter = new SimpleDateFormat("dd/MM/yy");
  15.         try {
  16.             date = formatter.parse(dt);
  17.         } catch (ParseException ex) {
  18.  
  19.             ex.printStackTrace();
  20.         }
  21.         unixtime = date.getTime() / 1000L;
  22.         return unixtime;
  23.     }}
  24.  


P.S. или пишут, что работает: http://stackoverflow.com/a/2009224

_________________
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Парсинг даты. Что упускаю?
СообщениеДобавлено: 19 авг 2014, 10:56 
Аватар пользователя

Зарегистрирован: 09 янв 2012, 14:45
Сообщений: 2386
Откуда: Самара
Благодарил (а): 102 раз.
Поблагодарили: 321 раз.
Сейчас проверю.
Вообще я спросил того, кто пишет серверную часть, он сказал что это W3C UTC формат, т.е. другими словами похоже это стандарт.

_________________
Изображение

А тот ли ты путь выбрал, разработчик?
Хочешь знать ошибки ответ? Загляни в logcat!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Парсинг даты. Что упускаю?
СообщениеДобавлено: 19 авг 2014, 11:43 
Аватар пользователя

Зарегистрирован: 13 ноя 2013, 14:46
Сообщений: 1956
Благодарил (а): 10 раз.
Поблагодарили: 275 раз.
Mikhail_dev писал(а):
Сейчас проверю.
Вообще я спросил того, кто пишет серверную часть, он сказал что это W3C UTC формат, т.е. другими словами похоже это стандарт.

Я же говорю он не хороший человек ... W3C UTC - это формат вывода, он не подразумевает вообще передачу данных, т.е. он сделал то, что пытаешься сделать ты, получил timestamp, указал опции форматирования и вывел дату. Если конечно ты парсишь сайт, то да он просто не хороший и не позаботился о том, как людям эту дату получать, тут api нужно и отдавать нормальную дату... Но дело в том, что если ты к примеру пытаешься получить дату сообщения привязанную к нему, но нафига тебе ее конвертировать, просто так в строке и показывай. А иначе лучше попросить человека сделать нормальный rest.

_________________
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Парсинг даты. Что упускаю?
СообщениеДобавлено: 19 авг 2014, 16:48 

Зарегистрирован: 30 апр 2014, 11:42
Сообщений: 180
Благодарил (а): 3 раз.
Поблагодарили: 44 раз.
Так должно работать, просто невнимательность походу (он не понимает Z в конце шаблона) :)
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1.         String dateStr = "2014-08-18T13:12:56.19Z";
  2.  
  3.         SimpleDateFormat readFormat = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ss.SSS");
  4.  
  5.  
  6.  
  7.         Date date = null;
  8.  
  9.         try {
  10.  
  11.             date = readFormat.parse( dateStr );
  12.  
  13.         } catch (java.text.ParseException e) {
  14.  
  15.             e.printStackTrace();
  16.  
  17.         }


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Парсинг даты. Что упускаю?
СообщениеДобавлено: 19 авг 2014, 20:49 
Аватар пользователя

Зарегистрирован: 09 янв 2012, 14:45
Сообщений: 2386
Откуда: Самара
Благодарил (а): 102 раз.
Поблагодарили: 321 раз.
Хм... Странно. Завтра если будет время, то запущу на проверку.

_________________
Изображение

А тот ли ты путь выбрал, разработчик?
Хочешь знать ошибки ответ? Загляни в logcat!


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB