在 Dart 中我想这样做:
var s = "2018-11-23T04:25:41.9241411Z"; // string comes from a json but represented here for simplicity like this
var d = DateTime.parse(s);
但它会抛出一个空值。
Dart 似乎无法解析 iso 8601 日期时间格式。我找到了一个名为“Iso8601DateTimeSerializer”的自定义序列化程序,但如何将它添加到我的 flutter 应用程序中?
链接:https://reviewable.io/reviews/google/built_value.dart/429#-
此处的说明仅指示使用“SerializersBuilder.add”将其添加到 dart,但我是新手,不知道如何操作?
最佳答案
问题是 Dart 的 DateTime.parse
最多只接受六位小数秒,而您的输入有七位。
... and then optionally a '.' followed by a one-to-six digit second fraction.
您可以使用以下方法将您的输入清理到六位数:
String restrictFractionalSeconds(String dateTime) =>
dateTime.replaceFirstMapped(RegExp(r"(\.\d{6})\d+"), (m) => m[1]);
也许解析函数应该只接受更多数字,即使它们不影响值。
关于dart - 如何在 dart 中添加序列化程序以将 iso 8601 转换为 datetime 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53440796/