I have a String like this "6:45AM" then how can i convert it into 24-hour TimeOfDay or DateTime format

Solution 1:

You can try to use a DateFormat, just include intl dependency to your pubspec.yaml

First parse the value to a date, then format it how you want

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));

References

  • DateTime
  • intl package

Solution 2:

Try this:

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

Solution 3:

In case of "hh:mm:ssPM" or "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);