尝试将 String 转换为 DateTime 但抛出异常

Trying to convert a String to DateTime but it throws exception

我想以 17 May 2022 格式显示日期,但在使用 DateFormat 时抛出以下异常。

Trying to read MMMM from 2022-05-16 21:39:39.333741 at position 0

return GroupedListView<dynamic, DateTime>(
  elements: messageList,
  groupBy: (element) => DateFormat.yMMMMd().parse(element['time']),
  groupSeparatorBuilder: (DateTime groupByvalue) {
    return Container(child: Text(DateFormat.yMMMMd().format(groupByvalue)));
  },
  itemBuilder: (context, element) {
    return Container(
      child: Text(element['message']),
    );
  },
);

{ 'time': '2022-05-16 21:39:39.333741', 'message': "hello", 'messagetype': Messagetype.receiver },

以上是我使用的示例'time'。

你的日期格式有误,

尝试将您的日期转换为新格式

示例:

dateFormate = DateFormat("yyyy-MM-dd' 'HH:mm:ss.SSSSSS'Z").format(DateTime.parse("2022-05-16 21:39:39.333741"));
return GroupedListView<dynamic, DateTime>(
      elements: messageList,
      groupBy: (element) => DateFormat.yMMMMd().parse(DateTime.parse(element['time'])),
      groupSeparatorBuilder: (DateTime groupByvalue) {
        return Container(child: Text(DateFormat.yMMMMd().format(groupByvalue)));
      },
      itemBuilder: (context, element) {
        return Container(
          child: Text(element['message']),
        );
      },
    );**

你需要先解析,然后格式化类型17 May 2022 像这样:

final dateTime = DateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS'Z").parse('2022-05-16 21:39:39.333741');

final dateTimeString = DateFormat.yMMMMd().format(dateTime);