Dart 如何在flatter中将字符串转换为TimeOfDay?
我有一个字符串,比如说'16:00',我想把它转换成TimeOfDay类型。Dart 如何在flatter中将字符串转换为TimeOfDay?,dart,flutter,Dart,Flutter,我有一个字符串,比如说'16:00',我想把它转换成TimeOfDay类型。 我查看了文档,它只提供了从DateTime到TimeOfDay的conversor,但我找不到从字符串到TimeOfDay的转换方法。您可以这样做: TimeOfDay time = TimeOfDay(hour: s.split(":")[0], minute: s.split(":")[1]); TimeOfDay stringToTimeOfDay(String tod) { final format =
我查看了文档,它只提供了从DateTime到TimeOfDay的conversor,但我找不到从字符串到TimeOfDay的转换方法。您可以这样做:
TimeOfDay time = TimeOfDay(hour: s.split(":")[0], minute: s.split(":")[1]);
TimeOfDay stringToTimeOfDay(String tod) {
final format = DateFormat.jm(); //"6:00 AM"
return TimeOfDay.fromDateTime(format.parse(tod));
}
s
是要转换的字符串。试试这个
TimeOfDay _startTime = TimeOfDay(hour:int.parse(s.split(":")[0]),minute: int.parse(s.split(":")[1]));
这对我很有用。像这样:
TimeOfDay time = TimeOfDay(hour: s.split(":")[0], minute: s.split(":")[1]);
TimeOfDay stringToTimeOfDay(String tod) {
final format = DateFormat.jm(); //"6:00 AM"
return TimeOfDay.fromDateTime(format.parse(tod));
}
更新的解决方案2020年8月26日 我编写了一个
函数
将标准日期字符串
的显示方式(例如上午7:04)转换为时间
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);
}
TimeOfDay时间转换(字符串normTime){
整小时;
整数分钟;
字符串ampm=normTime.substring(normTime.length-2);
字符串结果=normTime.substring(0,normTime.indexOf(“”));
if(ampm=='AM'&&int.parse(result.split(“:”[1])!=12){
hour=int.parse(result.split(“:”)[0]);
如果(小时=12)小时=0;
分钟=int.parse(result.split(“:”[1]);
}否则{
hour=int.parse(result.split(“:”)[0])-12;
如果(小时适用于上午/下午
TimeOfDay _time = TimeOfDay(hour:int.parse(string.split(":")[0]),minute: int.parse(string.split(":")[1].split(" ")[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,
);
}
对于新手或初学者来说,这似乎很忙,但您可以轻松地将字符串转换为DateTime
,然后将DateTime
转换为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);
}
按照以下步骤进行无缝转换,而不会造成任何混乱:
将此包添加到pubspec.yaml
:
将任何日期字符串转换为有效的DateTime对象需要此包。
2.将日期字符串转换为DateTime
对象,如下所示:
DateTime DateTime=DateFormat(“h:mm a”).parse(placement.startTime);
TimeOfDay-TimeOfDay=TimeOfDay.fromDate(dateTime)
好了。但是别忘了相应地更改您的日期格式
字符串。对我来说,我的日期字符串是4:30 AM
,所以我的日期格式
字符串是“h:mm a”
。根据需要更改DateFormat
字符串。对于DateFormat
字符串引用,请遵循此这是正确的,没有考虑转换。这在本地化字符串时不起作用。例如,9:00 AM什么是“DateFormat”?在本例中是一种解析器格式,用于告诉“TimeOfDay”应如何解析传入数据