Во Flutter, когда я получаю параметр DateTime через API, как я могу проанализировать время и преобразовать его из «2019-10-30T20: 30: 00» в 20:30? - PullRequest
0 голосов
/ 31 октября 2019

При получении расписаний классов через 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

Ответы [ 3 ]

0 голосов
/ 31 октября 2019

ОБНОВЛЕНИЕ

Только что нашел эту библиотеку: https://pub.dev/packages/intl. Кажется, она включает библиотеку DateFormat из API Dart, которая будет делать то, что вы хотите.

ORIGINAL

Я не думаю, что есть способ встроить время 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 голосов
/ 04 ноября 2019

Попробуйте этот пакет, Jiffy

var jiffy = Jiffy("2019-10-30T20:30:00", "yyyy-MM-ddThh:mm:ss");

var String = jiffy.format("h:mm"); // 8:30
// or use default formats
var String = jiffy.jm; // 8:30 PM

Вы также можете выполнить синтаксический анализ в вашем объекте DateTime

String time = '2019-10-30T20:30:00';
DateTime dateTime = DateTime.parse(time);
Jiffy(dateTime).format("h:mm"); // 8:30
0 голосов
/ 31 октября 2019

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

Вы даже можете рассчитать разницу дат, преобразовать в строку и т. Д.

...