Dart - 如何根据设备时区格式化日期时间?

use*_*690 3 dart flutter

我是 Dart 的新手。我目前在格式化 DateTime 以根据设备的时区显示时间时遇到问题。有人可以建议我如何实现这一目标吗?我目前的代码如下:

DateFormat('dd MMM yyyy hh:mm')
Run Code Online (Sandbox Code Playgroud)

输出样本:2019 年 3 月 11 日 07:04

期望:我的设备目前正在使用 GMT+8,我期望它显示为 2019 年 3 月 11 日 15.04。

请指教。谢谢!!

Raf*_*afi 9

将 UTC 转换为本地时区:

import 'package:intl/intl.dart';

var dateValue = new DateFormat("yyyy-MM-ddTHH:mm:ssZ").parseUTC("2020-06-14T18:55:21Z").toLocal();
String formattedDate = DateFormat("dd MMM yyyy hh:mm").format(dateValue);
debugPrint("formattedDate = "+formattedDate);
Run Code Online (Sandbox Code Playgroud)

  • `.toLocal()` 为我做到了。谢谢。 (3认同)
  • 哦,终于。谢谢,我一直在努力将一个简单的 UTC 日期转换为本地时区大约 2 个小时,这太荒谬了,哈哈。 (2认同)

Sha*_*jdu 5

为了确保您的 DateTime 使用设备的当前时区,请始终使用 toLocal()。

DateTime.toLocal() 文档: https://api.dart.dev/stable/2.18.5/dart-core/DateTime/toLocal.html

所以简单地做:

DateFormat('dd MMM yyyy hh:mm').format(myDate.toLocal())
Run Code Online (Sandbox Code Playgroud)


Fil*_*cks -3

安装intl 包,然后使用 DateFormat。

import 'package:intl/intl.dart';
Run Code Online (Sandbox Code Playgroud)
final dateFormatter = DateFormat('d MMMM yyyy hh:mm');
print(dateFormatter.format(your_date_time_object));
Run Code Online (Sandbox Code Playgroud)

  • 我认为应该使用 DateFormat 而不是 DateForm (3认同)