[通过API检索课程表时,课程时间(在API RESPONSE中)显示为“ 2019-10-30T20:30:00”。我只想解析时间并将其转换为12小时时间格式?
这是我的代码,用于提取当前时间的字符...
容器(子级:Text(data [index] ['StartDateTime'] [11] .toString()),),容器(子级:Text(data [index] ['StartDateTime'] [12] .toString()),),容器(子级:Text(data [index] ['StartDateTime'] [13] .toString()),),容器(子级:Text(data [index] ['StartDateTime'] [14] .toString()),),容器(子级: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
您甚至可以计算日期差,转换为String等。>
刚刚找到此库:https://pub.dev/packages/intl。它似乎包括Dart API中的DateFormat库,它也可以执行您想要的操作。
我认为没有内置的方法可以获取AM / PM时间。您必须编写一些逻辑。这是我的,可能会变得更容易。
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';
}