Дротик — Флаттер — Акведук: странное поведение DateTime.parse()

#parsing #dart #flutter #datetime-parsing #aqueduct

#синтаксический анализ #дротик #флаттер #datetime-синтаксический анализ #акведук

Вопрос:

да, да, хорошие люди, я действительно смущен поведением DateTime.parse();

на dartpad это работает

 void main() {
      const String _iso8601 = '2019-04-01T08:30:00';
      final DateTime _date = DateTime.parse(_iso8601);
        print(_date.toIso8601String());
}
 

но в flutter этого не делает, но это делает

       const String _iso8601 = '2019-04-01T08:30:00.000';
      final DateTime _date = DateTime.parse(_iso8601);
 

Сейчас я в акведуке, и ни одна из этих работ, включая это

 String _iso8601 = '2019-04-01T08:30:00Z';
 

пожалуйста, обратите внимание, что с «не сработало» я не имею в виду, что он возвращает ошибку,
а просто значение null.

[правка: исправление

когда я издеваюсь над строкой вместо того, чтобы отображать ее из тела запроса, она возвращает

Произошло исключение. FormatException (null)

но опять же, я использую Iso8601]

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

[редактировать: обратите внимание, что aqueduct работает на dart 2.0]

Заранее благодарю вас, Франческо

Ответ №1:

Примеры принятых строк:

 "2012-02-27 13:27:00"
"2012-02-27 13:27:00.123456z"
"2012-02-27 13:27:00,123456z"
"20120227 13:27:00"
"20120227T132700"
"20120227"
" 20120227"
"2012-02-27T14Z"
"2012-02-27T14 00:00"
"-123450101 00:00:00 Z": in the year -12345.
"2002-02-27T14:00:00-0500": Same as "2002-02-27T19:00:00Z"
 

Комментарии:

1. да, это не похоже на проблему, я просмотрел документы, самое близкое к тому, что я получаю от API, — это последнее, которое я использовал с буквой «Z» в конце, я пробовал с миллисекундами «.000» … ничего не меняется

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

3. в flutter и dartpad возвращает это «‘2019-04-01T08:30:00.000′», что согласуется с поведением, наблюдаемым в flutter (darpad еще более гибкий, по причине, которую я не понимаю); Я не проверял aqueduct, но я предполагаю, что он должен возвращать то же самое… но поскольку я не анализирую его, я мог бы взглянуть