firebase 如何将扑动时间保存到火力点?

55ooxyrt  于 2023-02-13  发布在  其他
关注(0)|答案(3)|浏览(124)

我正在一个flutter应用程序中使用这个插件显示TimeRangepicker:time_range_picker,并且通过使用以下代码,得到**TimeOfDay(09:00)+ TimeOfDay(12:00)**作为结果:

onPressed: () async {
                        TimeRange result = await showTimeRangePicker(
                            use24HourFormat: false,
                            interval: Duration(minutes: 30),
                            context: context,
                            start: TimeOfDay(hour: 9, minute: 0),
                            end: TimeOfDay(hour: 12, minute: 0),
                            disabledTime: TimeRange(
                                startTime: TimeOfDay(hour: 23, minute: 0),
                                endTime: TimeOfDay(hour: 5, minute: 0)),
                            disabledColor: Colors.red.withOpacity(0.5),
                            strokeWidth: 4,
                            ticks: 24,
                            ticksOffset: -7,
                            ticksLength: 15,
                            ticksColor: Colors.grey,
                            labels: [
                              "12 pm",
                              "3 am",
                              "6 am",
                              "9 am",
                              "12 am",
                              "3 pm",
                              "6 pm",
                              "9 pm"
                            ].asMap().entries.map((e) {
                              return ClockLabel.fromIndex(
                                  idx: e.key, length: 8, text: e.value);
                            }).toList(),
                            labelOffset: 35,
                            rotateLabels: false,
                            padding: 60);

                        print("${result.startTime} + ${result.endTime}");
                      },

但唯一的问题是我可以找到一个适当的方法来保存这个到消防基地,我不需要日期所有我需要的是一天的时间。

iugsix8n

iugsix8n1#

Firestore中没有用于存储时间的特定数据类型,因此必须将其Map到现有类型之一。
一些常见的Map是:

  • 将一天中的时间存储为字符串值,例如“07:55:00.000”(如果您最高关注毫秒精度)
  • 将一天中的时间存储为相对于午夜的偏移量,例如28500(作为从午夜到上午7:55的秒数)
  • Timestamp字段中存储一天中的时间作为固定日期的时间部分。这本质上是前面方法的变体,偏移量是从start of the epoch开始的。假设您选择历元的开始(1970年1月1日)作为固定日期,那么Timestamp的值将是28500000(毫秒)。

所有这些都有有效的用例,所以选择一个最适合你的应用的用例。

9gm1akwq

9gm1akwq2#

在只需要小时和分钟的常见用例中,这些值的简单Map就足够了。

Map timeOfDayToFirebase(TimeOfDay timeOfDay){
    return {
        'hour':timeOfDay.hour,
        'minute':timeOfDay.minute
           }
}

TimeOfDay firebaseToTimeOfDay(Map data){
        return TimeOfDay(
            hour: data['hour'],
            minute: data['minute']);
}


var myTimeOfDayObject=TimeOfDay.now();
firebase.update({'time': timeOfDayToFirebase(myTimeOfDayObject)});

这样,您就不必担心管理偏移量、意外的语言环境更改等问题。

piwo6bdm

piwo6bdm3#

你可以用这个

class ClassModel {
  TimeOfDay time;
  ClassModel({
    required this.time,
  });

  Map<String, dynamic> toMap() {
    return <String, dynamic>{
      'time': (time.hour.toString() + "*" + time.minute.toString()),
    };
  }

  factory ClassModel.fromMap(Map<String, dynamic> map) {
    return ClassModel(
      time: TimeOfDay(
          hour: int.parse(map['time'].toString().split("*").first),
          minute: int.parse(map['time'].toString().split("*").last)),
    );
  }
}

相关问题