intl DateFormat анализирует странное поведение - PullRequest
1 голос
/ 05 августа 2020

Сервер, на котором я работаю, на некоторых маршрутах возвращает дату с одним дополнительным числом, и это вызывало странное поведение в нашем приложении. Затем я изолировал странное поведение от следующего кода:

import 'package:intl/intl.dart';

void main() {
  final format = DateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ");
  print(format.parse('2020-08-05T14:23:55.974582+00:00'));
  print(format.parse('2020-08-05T14:23:55.9745829+00:00'));
}

производит вывод:

2020-08-05 14:40:09.582
2020-08-05 17:06:20.829

Почему дополнительное число 9 приводит к разнице в 3 часа? Я не могу понять, почему.

Я создал ответ, чтобы вы могли попробовать: https://repl.it/join/jfhehoqt-leonardosilva25

когда я пытаюсь быстро разобрать ту же строку, это дает результат отличается от результата dart, обе строки дают мне одну и ту же дату https://repl.it/join/ncjffdth-leonardosilva25

оригинальный быстрый код из repl для справки:

import Foundation

let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSSSSSZ"

print(dateFormatter.date(from: "2020-08-05T14:23:55.974582+00:00")!)
print(dateFormatter.date(from: "2020-08-05T14:23:55.9745829+00:00")!)
...