我需要在Dart中的DateTime对象中解析这种日期"2014年8月11日星期一下午12:53".

DateTime有一个静态方法parse,它接受ISO 8601格式的子集,而不是我的情况.

DateFormat类允许您定义要解析的日期模式.我已经创建了模式"EEE,dd MMM yyyy HH:mm a zzz".

用它我得FormatException: Trying to read a from Mon, 11 Aug 2014 12:53 pm PDT at position 23分.

看起来解析器不喜欢PM标记用例(我打开了一个issue About).

我试着解决整个管柱上套管的问题.使用字符串all大写,我再次得到一个FormatException,因为星期和月份的名称都是大写的.

是否有其他解决方案或解决方法?

推荐答案

您只需将小写的"am"/"pm"字符替换为大写即可.

import 'package:intl/intl.dart';

void main() {
  var date = 'Mon, 11 Aug 2014 12:53 pm PDT';
  DateFormat format = new DateFormat("EEE, dd MMM yyyy hh:mm a zzz");
  date = date.replaceFirst(' pm', ' PM').replaceFirst(' am', ' AM');
  print(date);
  print(format.parse(date));
}

Dart相关问答推荐

`异步内联方法`的这些定义之间有什么区别?

如何在 Flutter 中将 textEditiing 控制器与 Provider 一起使用

如何在动态链接中传递参数?

在 Flutter 中保持响应的同时制作持久的背景图像

Dart VM 的性能与 Node.js 相比如何?

使用Flutter/dart的NTLM身份验证

Flutter-当文本字段有焦点时隐藏提示文本

如何在 Flutter 中匹配密码和确认密码?

Dart 中的构造函数和初始化列表有什么区别?

为什么不推荐使用 context2d.backingStorePixelRatio?

VS Code 首选项的位置

Dart 中的抽象基类

列表的反向迭代器?

我应该更喜欢迭代 Map.entries 还是 Map.values?

Dart 脚本会在浏览器中本地运行吗?

在 Dart 中没有换行符的 print()?

Dart 中的 urlencoding

如何通过 Dart 中的值获取 Map 键?

在 Dart 中覆盖哈希码的好方法是什么?

在 Dart 中是否有一种将 int 转换为 double 的快速方法?