我有一个包含日期的字符串,其格式为yyyyMMddHHmmss(例如,(20180626170555),并且我正在使用以下代码将其转换为日期时间
dateTimeFromString(json['dateTime'], "yyyyMMddHHmmss")
例外是:
FormatException: Trying to read MM from 20180623130424 at position 14
可能是什么原因?
答案 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());
参考链接:
- 将
intl
用于DateFormat
(来自flutter软件包(https://pub.dev/packages/intl)- DateTime.parse()=> https://api.dart.dev/stable/2.7.2/dart-core/DateTime/parse.html
答案 1 :(得分:8)
intl DateFormat
无法应付您的输入字符串,因为它没有任何分隔符。整个字符串将作为年份消耗掉。但是DateTime.parse
可以解决这个问题(几乎)。碰巧恰好期望您拥有(几乎是差不多)的格式。
parse
是20120227T132700
可接受的样式之一,只是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中,您需要将M
到month 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))