首页 > 解决方案 > 如何使用 UTC 时区偏移格式化 DateTime?

问题描述

这是什么类型的日期格式?

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。我应该使用哪个?

标签: datetimeflutterdart

解决方案


到目前为止,还没有直接的方法可以获得这种日期格式。有一个解决方法。

  • 添加国际
  • 使用将其导入您的文件import 'package:intl/intl.dart';
  • 编写以下代码:
var dateTime = DateTime.now();
var val      = DateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS").format(dateTime);
var offset   = dateTime.timeZoneOffset;
var hours    = offset.inHours > 0 ? offset.inHours : 1; // For fixing divide by 0

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);

推荐阅读