Dart - 如何根据设备时区格式化 DateTime?

6

我是Dart的新手。 目前我面临的一个问题是如何将我的日期时间格式化以显示基于设备时区的时间。 有人能指导我如何实现吗? 我的当前代码如下:

DateFormat('dd MMM yyyy hh:mm')

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

期望结果: 我的设备当前使用的是GMT+8时区,我希望它显示为2019年3月11日15:04。

请指导。 谢谢!!


https://pub.dartlang.org/packages/intl 应该能帮助您完成此任务。 - Günter Zöchbauer
4个回答

25

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

3
哦,终于弄好了。谢谢,我一直在努力将一个简单的UTC日期转换为本地时区,大约花了2个小时,太荒唐了,哈哈。 - briosheje

4

3

我从 Laravel API 获取了数据

Laravel 中的 dateTimeUTC 形式为 2021-05-21T17:33:24.000000Z

import 'package:intl/intl.dart';


String dateTime = "2021-05-21T17:33:24.000000Z" // String datetime UTC zone

DateTime parsedDateFormat = DateFormat("yyyy-MM-ddTHH:mm:ssZ").parseUTC(dateTime).toLocal(); // parse String datetime to DateTime and get local date time 

String formatedDateTime = DateFormat.yMd().add_jm().format(parsedDateFormat).toString(); // convert local date time to string format local date time

// output is 5/21/2021 11:03PM

-3

安装intl包,然后使用DateFormat。

import 'package:intl/intl.dart';

final dateFormatter = DateFormat('d MMMM yyyy hh:mm');
print(dateFormatter.format(your_date_time_object));

@user3180690 很棒。请标记为正确,这样其他成员就知道它起作用了。 - Filled Stacks
3
我认为应该使用 DateFormat 而不是 DateForm。 - Bruno Pinto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接