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()),
3 Réponses :
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.
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.
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'; }
Merci Derek, c'est super. Je vais essayer ça plus tard pour voir comment ça marche!
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