在飞镖中我想这样做:
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);
但它会抛出一个null。
Dart似乎无法解析iso 8601日期时间格式。我找到了一个名为“Iso8601DateTimeSerializer”的自定义序列化程序,但是如何将它添加到我的flutter应用程序中呢?
链接:https://reviewable.io/reviews/google/built_value.dart/429#-
这里的说明仅指示使用“SerializersBuilder.add”将其添加到飞镖中,但我是新手并且无法找到方法?
问题是Dart的DateTime.parse
只接受最多六位小数秒,你的输入有7位。
......然后可选择'。'然后是一到六位数的第二部分。
您可以使用以下内容将您的输入消毒至六位数:
String restrictFractionalSeconds(String dateTime) =>
dateTime.replaceFirstMapped(RegExp(r"(\.\d{6})\d+"), (m) => m[1]);
也许解析函数应该只接受更多数字,即使它们不影响该值。
只是为了补充Irn的答案。您需要为正则表达式添加一些转义才能正常工作。
String restrictFractionalSeconds(String dateTime) =>
dateTime.replaceFirstMapped(RegExp("(\\.\\d{6})\\d+"), (m) => m[1]);