2017-02-01 3 views
0

Я создал твит с помощью REST API Twitters. Вернулся JSON из твиттера из создавшегося Tweet в этом форматеРазбор строки даты из сообщения Twitter с информацией о часовом поясе включен

'Tue Jan 31 11:15:15 +0000 2017' 

Дартс

DateTime.parse('Tue Jan 31 11:15:15 +0000 2017'); 

не разобрать этот формат. Я обратился к intl Пакет имеет некоторую надежду в решении этой проблемы. Я пытаюсь использовать DateFormat для решения этой проблемы

DateFormat format = new DateFormat("EEE MMM dd HH:mm:ss ZZZZ yyyy"); 
format.parse('Tue Jan 31 11:15:15 +0000 2017'); 

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

'Tue Jan 31 11:15:15 2017' 

и сделайте следующее

var date = 'Tue Jan 31 11:15:15 +0000 2017'.split(' '); 
date.removeAt(4); 
DateFormat format = new DateFormat("EEE MMM dd HH:mm:ss yyyy"); 
format.parse(date.join(' ')); 

Как я могу разобрать Задан строку Twitter, не снимая часовой пояс информация часть?

ответ

3

Похоже package:intl не поддерживают часовые пояса еще: https://github.com/dart-lang/intl/issues/128

Вы можете добавить свой вариант использование для выпуска (оно не должно быть много работы и не требуют дополнительных данных для поддержки «ZZZZ» дела, так как вам просто нужно разобрать номер), или даже лучше, представить запрос Pull!

2

Dart DateTime не поддерживает часовые пояса, поэтому не стоит их разбирать. Кроме того, Intl, вероятно, не самый лучший способ для синтаксического анализа такой строки. Точка синтаксического анализа Intl date заключается в том, что она зависит от локали. Если вы хотите проанализировать фиксированный формат, это можно сделать более легко и эффективно.

Поскольку DateTime не поддерживает часовые пояса, если вы хотите использовать эту информацию, вам кажется, что лучше всего удалить ее, получить информацию, а затем добавить это к тому времени после факта.

Если вы работаете в браузере, вы также можете обратиться к JS Date.parse(), который обрабатывает этот формат.

+0

Я хотел просто разобрать строку даты и не выполнять собственный парсер. DateTime не анализирует такие вещи, как Jan и т. Д. Хотя я мог бы написать что-то, чтобы изменить это на то, что примет DateTime, я не хочу. Вот почему пакет: intl был настолько привлекателен для меня, потому что он обрабатывает такие вещи, как Jan. Спасибо, что указали JS Date.parse, хотя я тоже хочу сделать эту серверную часть. –