如何在Flutter中将String转换为TimeOfDay?

时间:2018-11-19 21:35:21

标签: dart flutter

我有一个字符串,假设为“ 16:00”,我想将其转换为TimeOfDay类型。 我检查了文档,它仅提供从DateTime到TimeOfDay的转换程序,但是我找不到从String转换为TimeOfDay的方法。

7 个答案:

答案 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


按照以下步骤进行无缝转换,而不会搞砸任何事情:

  1. 将此包添加到 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