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

时间:2019-03-11 08:22:12

标签: dart flutter

我是Dart的新手。 我目前面临格式化日期时间以根据设备的时区显示时间的问题。 有人可以告诉我如何实现吗? 我当前的代码如下:

DateFormat('dd MMM yyyy hh:mm')

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

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

请告知。 谢谢!

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

我从 laravel api 获取数据

laravel dateTimeUTC like 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

答案 2 :(得分:0)

安装intl package,然后使用DateFormat。

import 'package:intl/intl.dart';
...
var dateFormatter = new DateForm('d MMMM yyyy hh:mm');
print(formatter.format(dateFormatter));