这是什么类型的日期格式?
2020-03-26T00:57:08.000+08:00
我使用DateFormat类
DateTime dateTime = DateTime.now();
print(dateTime.toIso8601String());
print(dateTime.toLocal());
print(dateTime.toUtc());
输出
I/flutter (20667): 2020-03-26T01:34:20.826589
I/flutter (20667): 2020-03-26 01:34:20.826589
I/flutter (20667): 2020-03-25 17:34:20.826589Z
我希望有一个日期格式,如我显示的第一个输出,后面有+08:00。我应该使用哪个?
答案 0 :(得分:2)
到目前为止,还没有直接的方法来获取这种日期格式。有一种解决方法。
import 'package:intl/intl.dart';
var dateTime = DateTime.now();
var val = DateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS").format(dateTime);
// There is no timezone data associated with DateTime, so you have to use the following code to get the timezone info
var offset = dateTime.timeZoneOffset;
var hours = offset.inHours > 0 ? offset.inHours : 1; // For fixing divide by zero error
if (!offset.isNegative) {
val = val + "+" + offset.inHours.toString().padLeft(2, '0') + ":" + (offset.inMinutes%(hours*60)).toString().padLeft(2, '0');
} else {
val = val + offset.inHours.toString().padLeft(2, '0') + ":" + (offset.inMinutes%(hours*60)).toString().padLeft(2, '0');
}
print(val);
答案 1 :(得分:1)
这是什么类型的日期格式?
此格式为UTC +时区偏移。
该+08:00是已添加的时区偏移量。
似乎DateTime
不包含时区信息,因此,您不能在特定时区中创建DateTime。仅系统时区和UTC可用。
还必须说DateTime
支持解析时区偏移,但将其标准化为UTC或本地时间。
因此,由于这是UTC,您可能可以使用toUtc
或toLocal
对其进行格式化,接收者将能够对其进行解析。
话虽如此,您可以像这样简单地解析它:
DateTime.parse("2020-03-26T00:57:08.000+08:00")