无法将yyyyMMddHHmmss格式的字符串日期转换为DateTime dart

时间:2018-06-26 12:10:36

标签: dart flutter

我有一个包含日期的字符串,其格式为yyyyMMddHHmmss(例如,(20180626170555),并且我正在使用以下代码将其转换为日期时间

dateTimeFromString(json['dateTime'], "yyyyMMddHHmmss")

例外是:

FormatException: Trying to read MM from 20180623130424 at position 14

可能是什么原因?

7 个答案:

答案 0 :(得分:31)

DateTime.parse("string date here")仅接受某些格式化的字符串。查看以下可接受的字符串示例。

  • "2012-02-27 13:27:00"
  • "2012-02-27 13:27:00.123456789z"
  • "2012-02-27 13:27:00,123456789z"
  • "20120227 13:27:00"
  • "20120227T132700"
  • "20120227"
  • "+20120227"
  • "2012-02-27T14Z"
  • "2012-02-27T14+00:00"
  • "-123450101 00:00:00 Z":在-12345年。
  • "2002-02-27T14:00:00-0500":与"2002-02-27T19:00:00Z"

=>字符串到DateTime

DateTime tempDate = new DateFormat("yyyy-MM-dd hh:mm:ss").parse(savedDateString);

=>日期时间为字符串

String date = DateFormat("yyyy-MM-dd hh:mm:ss").format(DateTime.now());

参考链接:

答案 1 :(得分:8)

intl DateFormat无法应付您的输入字符串,因为它没有任何分隔符。整个字符串将作为年份消耗掉。但是DateTime.parse可以解决这个问题(几乎)。碰巧恰好期望您拥有(几乎是差不多)的格式。

parse20120227T132700可接受的样式之一,只是T日期/时间分隔符有所不同。

尝试一下:

String date = '20180626170555';
String dateWithT = date.substring(0, 8) + 'T' + date.substring(8);
DateTime dateTime = DateTime.parse(dateWithT);

答案 2 :(得分:7)

"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"转换为'MM/dd/yyyy hh:mm a'

date = '2021-01-26T03:17:00.000000Z';
DateTime parseDate =
    new DateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").parse(date);
var inputDate = DateTime.parse(parseDate.toString());
var outputFormat = DateFormat('MM/dd/yyyy hh:mm a');
var outputDate = outputFormat.format(inputDate);
print(outputDate)
<块引用>

输出 01/26/2021 03:17 上午

答案 3 :(得分:4)

docs中,您需要将Mmonth in year

dateTimeFromString(json['dateTime'], "yMdHms")

答案 4 :(得分:2)

您可以使用DateFormat将字符串中的DateTime解析为对象

// With en_US locale by default
var newDateTimeObj = new DateFormat().add_yMd().add_Hms().parse("7/10/1996 10:07:23")
// with a defined format
var newDateTimeObj2 = new DateFormat("dd/MM/yyyy HH:mm:ss").parse("10/02/2000 15:13:09")

检查文档here

答案 5 :(得分:1)

有关如何在Flutter中将String转换为Date并将Date转换为String的基本信息。查看下面的链接

https://quickstartflutterdart.blogspot.com/2018/10/how-to-convert-string-to-date-and-date.html

可能会对其他人有所帮助。

答案 6 :(得分:0)

由于@Richard_Heap,这起到了我的作用

new Text(timeago.format(DateTime.parse(mytimestring))