在 Flutter 中,通过 API 检索 DateTime 参数时,如何解析时间并将其从 "2019-10-30T20:30:00" 点转换为晚上 8:30?



通过API检索类计划时,类时间(在API RESPONSE中(显示为"2019-10-30T20:30:00"。我只是想解析时间并将其转换为12小时的时间格式?

这是我提取当前时间字符的代码。。。


Container(
child: Text(data[index]['StartDateTime'][11].toString()),
),
Container(
child: Text(data[index]['StartDateTime'][12].toString()),
),
Container(
child: Text(data[index]['StartDateTime'][13].toString()),
),
Container(
child: Text(data[index]['StartDateTime'][14].toString()),
),
Container(
child: Text(data[index]['StartDateTime'][15].toString()),

电流输出如下:20:30

DateTime有一个名为parse的函数,它返回一个DateTime对象,然后可以使用Flutter对其进行操作https://api.flutter.dev/flutter/dart-core/DateTime/parse.html

所以你做

DateTime p = DateTime.parse('2019-10-30T20:30:00');
print('${p.hour}:${p.minute}');

并打印20:30

你甚至可以计算日期差异,转换为字符串,等等

更新

刚刚找到此库:https://pub.dev/packages/intl.它似乎包含了来自Dart API的DateFormat库,它也可以实现您想要的功能。

原件

我不认为有一个内置的方式来获得上午/下午的时间。你必须写一些逻辑。这是我的,可能会更容易。

void main() {
String time = '2019-10-30T20:30:00';
DateTime dateTime = DateTime.parse(time);
String formatted = formatDateWithAmPm(dateTime);
print(formatted);
}
String formatDateWithAmPm(DateTime dateTime) {
String amPm = 'am';
if (dateTime.hour >= 12) {
amPm = 'pm';
}
String hour = dateTime.hour.toString();
if (dateTime.hour > 12) {
hour = (dateTime.hour - 12).toString();
}
String minute = dateTime.minute.toString();
if (dateTime.minute < 10) {
minute = '0${dateTime.minute}';
}
return '$hour:$minute$amPm';
}

试试这个包,Jiffy

var jiffy = Jiffy.parse("2019-10-30T20:30:00", pattern: "yyyy-MM-ddThh:mm:ss");
var time = jiffy.format("h:mm"); // 8:30
// or use default formats
var time = jiffy.jm; // 8:30 PM

您也可以在DateTime对象中进行解析

String time = '2019-10-30T20:30:00';
DateTime dateTime = DateTime.parse(time);
Jiffy.parseFromDateTime(dateTime).format("h:mm"); // 8:30

最新更新