2

我有 ServiceStack 返回的日期字符串:2013-08-25T12:06:32.8770000 但是转换为 Dart 的日期时出错

DateTime.parse(mapAccount[Account.RECCREATED]);

打电话时没问题

DateTime.parse((mapAccount[Account.RECCREATED] as String).substring(0, 26));

有没有办法修复它。谢谢。

4

1 回答 1

2

看起来字符串与内部使用的正则表达式不匹配:

 r'^([+-]?\d?\d\d\d\d)-?(\d\d)-?(\d\d)(?:[ T](\d\d)(?::?(\d\d)(?::?(\d\d)(.\d{1,6})?)?)? ?([zZ])?)?$'

但是正则表达式不支持超过 6 位的毫秒(和微秒)部分,但您提供 7 位数字。该文档没有说明支持哪些格式,但给出了一些示例。他们只声明他们支持ISO 8601的一个子集。

看起来您的解决方案是目前唯一的解决方案。不确定这是否应该被视为错误,但如果您认为这是错误,请在此处创建错误报告。

有关更多详细信息,请参阅有关文档DateTime.parse。看起来该parse功能的问题已经在错误跟踪器中。

于 2013-08-25T18:36:29.217 回答