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