如何在 dart 中添加序列化程序以将 iso 8601 转换为日期时间对象?

fra*_*tal 5 iso8601 datetime-format dart flutter

在飞镖我想这样做:

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);
Run Code Online (Sandbox Code Playgroud)

但它抛出一个空值。

Dart 似乎无法解析 iso 8601 日期时间格式。我找到了一个名为“Iso8601DateTimeSerializer”的自定义序列化程序,但如何将其添加到我的 flutter 应用程序中?

链接:https : //reviewable.io/reviews/google/built_value.dart/429#-

此处的说明仅指示使用“SerializersBuilder.add”将其添加到 dart,但我是新手,无法找到方法?

链接:https : //pub.dartlang.org/documentation/built_value/latest/iso_8601_date_time_serializer/Iso8601DateTimeSerializer-class.html

lrn*_*lrn 5

问题是 DartDateTime.parse只接受最多六位小数秒,而您的输入有七位。

...然后可以选择一个“.” 接下来是一到六位数字的第二个小数。

您可以使用以下方法将输入清理为六位数字:

String restrictFractionalSeconds(String dateTime) =>
    dateTime.replaceFirstMapped(RegExp(r"(\.\d{6})\d+"), (m) => m[1]);
Run Code Online (Sandbox Code Playgroud)

也许解析函数应该接受更多数字,即使它们不影响值。