0
votes

Dans Flutter, lors de la récupération d'un paramètre DateTime via l'API, comment puis-je analyser l'heure et la convertir de "2019-10-30T20: 30: 00" à 20h30?

Lors de la récupération des horaires de cours via l'API, les heures de cours (dans l'API RESPONSE) sont affichées sous la forme "2019-10-30T20: 30: 00". Je veux simplement analyser l'heure et la convertir au format 12 heures?

Voici mon code pour extraire les caractères de l'heure du moment ...


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()),


0 commentaires

3 Réponses :


0
votes

DateTime a une fonction appelée parse, il renvoie un objet DateTime que vous pouvez ensuite manipuler avec Flutter https://api.flutter.dev/flutter/dart-core/DateTime/parse.html

Alors vous faites

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

et il imprime 20:30

vous pouvez même calculer les différences de date, convertir en chaîne, etc.


0 commentaires

0
votes

MISE À JOUR

Je viens de trouver cette bibliothèque: https://pub.dev/packages/intl. Il semble inclure la bibliothèque DateFormat de l'API Dart, qui ferait également ce que vous voulez.

ORIGINAL

Je ne pense pas qu'il existe un moyen intégré pour obtenir AM / PM heure. Vous devrez écrire un peu de logique. Voici le mien, cela pourrait probablement être plus facile.

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

1 commentaires

Merci Derek, c'est super. Je vais essayer ça plus tard pour voir comment ça marche!



0
votes

Essayez ce package, Jiffy

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

Vous pouvez analyser également votre objet DateTime

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


0 commentaires