Сервер, на котором я работаю, на некоторых маршрутах возвращает дату с одним дополнительным числом, и это вызывало странное поведение в нашем приложении. Затем я изолировал странное поведение от следующего кода:
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")!)