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

问题描述 投票:0回答:2

[通过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

api datetime parsing flutter
2个回答
0
投票

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';
}

0
投票

更新

© www.soinside.com 2019 - 2024. All rights reserved.