我有一个字符串,假设为“ 16:00”,我想将其转换为TimeOfDay类型。 我检查了文档,它仅提供从DateTime到TimeOfDay的转换程序,但是我找不到从String转换为TimeOfDay的方法。
答案 0 :(得分:9)
像这样:
TimeOfDay stringToTimeOfDay(String tod) {
final format = DateFormat.jm(); //"6:00 AM"
return TimeOfDay.fromDateTime(format.parse(tod));
}
答案 1 :(得分:4)
您可以执行以下操作:
TimeOfDay time = TimeOfDay(hour: s.split(":")[0], minute: s.split(":")[1]);
s
是您想要转换的字符串。
答案 2 :(得分:1)
01leo的答案有问题。 小时和分钟参数应为int ... 所以,
TimeOfDay _startTime = TimeOfDay(hour:int.parse(s.split(":")[0]),minute: int.parse(s.split(":")[1]));
这对我有用。
答案 3 :(得分:0)
更新的解决方案,2020年8月26日
我写了function
,将显示标准日期String
的方式(例如上午7:04)转换为TimeOfDay
。
TimeOfDay timeConvert(String normTime) {
int hour;
int minute;
String ampm = normTime.substring(normTime.length - 2);
String result = normTime.substring(0, normTime.indexOf(' '));
if (ampm == 'AM' && int.parse(result.split(":")[1]) != 12) {
hour = int.parse(result.split(':')[0]);
if (hour == 12) hour = 0;
minute = int.parse(result.split(":")[1]);
} else {
hour = int.parse(result.split(':')[0]) - 12;
if (hour <= 0) {
hour = 24 + hour;
}
minute = int.parse(result.split(":")[1]);
}
return TimeOfDay(hour: hour, minute: minute);
}
您所要做的就是传递您的正常时间(例如12:14 PM),它将返回带有正确时间和上午/下午的TimeOfDay。
希望这对某人有帮助!
答案 4 :(得分:0)
适用于AM / PM
TimeOfDay _time = TimeOfDay(hour:int.parse(string.split(":")[0]),minute: int.parse(string.split(":")[1].split(" ")[0]));
答案 5 :(得分:0)
我在这里使用了一些答案,并且当AM和PM在字符串中时,它们不能正常工作。这是我的解决方法。
TimeOfDay fromString(String time) {
int hh = 0;
if (time.endsWith('PM')) hh = 12;
time = time.split(' ')[0];
return TimeOfDay(
hour: hh + int.parse(time.split(":")[0]) % 24, // in case of a bad time format entered manually by the user
minute: int.parse(time.split(":")[1]) % 60,
);
}
答案 6 :(得分:0)
这对于新手或初学者来说可能看起来很忙,但您可以轻松地将 String 转换为 DateTime
,然后将 DateTime
转换为 TimeOfDay
。
按照以下步骤进行无缝转换,而不会搞砸任何事情:
pubspec.yaml
: intl。此包是将任何日期字符串转换为有效 DateTime 对象所必需的。
2. 像这样将日期字符串转换为 DateTime
对象:
DateTime dateTime = DateFormat("h:mm a").parse(placement.startTime);
TimeOfDay timeOfDay = TimeOfDay.fromDate(dateTime)
给你。但不要忘记相应地更改您的 DateFormat
字符串。对我来说,我的日期字符串是 4:30 AM
,所以我的 DateFormat
字符串是 "h:mm a"
。根据需要更改 DateFormat
字符串。对于 DateFormat
字符串引用,请遵循此 link