1
votes

J'ai une chaîne comme celle-ci "6:45 AM", comment puis-je la convertir au format 24 heures TimeOfDay ou DateTime

Je veux convertir une chaîne (12 heures) "6:45 PM" en un format TimeOfDay 18:45:00 (24 heures), comment cela peut-il être fait?


2 commentaires

Salut, qu'avez-vous essayé jusqu'à présent et qu'est-ce qui n'allait pas exactement?


@Secespitus Bonjour, j'ai vu le document de la classe TimeOfDay mais je n'ai obtenu aucune méthode pour convertir une telle chaîne au format 24


3 Réponses :


12
votes

Vous pouvez essayer d'utiliser un DateFormat, ajoutez simplement une dépendance intl à votre pubspec.yaml

Commencez par analyser la valeur en une date, puis formatez-la comme vous le souhaitez

import 'package:intl/intl.dart';
// parse date
DateTime date= DateFormat.jm().parse("6:45 PM");
DateTime date2= DateFormat("hh:mma").parse("6:45PM"); // think this will work better for you
// format date
print(DateFormat("HH:mm").format(date));
print(DateFormat("HH:mm").format(date2));

Références


1 commentaires

Merci, cela a fonctionné, mais entre le 45 et le PM, il devrait y avoir un espace, mais pour ma chaîne, il n'y a pas d'espace entre



2
votes

Essayez ceci:

 var df =  DateFormat("h:mma");
 var dt = df.parse('6:45PM');
 print(DateFormat('HH:mm').format(dt));


0 commentaires

0
votes

Dans le cas de "hh: mm: ssPM" ou "hh: mm: ssAM" -

String [] splitedString = yourString.split(":");
String newFormat = splitedString[2].contain("PM") ? String.valueOf(Integer.parseInt(splitedString[0]) + 12) : splitedString[0] + ":" + splitedString[1] + ":" + splitedString[2].substring(0,2);


0 commentaires