【问题标题】:How to save flutter TimeOfDay to firebase?如何将 Flutter TimeOfDay 保存到 firebase?
【发布时间】:2021-04-22 00:58:32
【问题描述】:

我正在开发一个颤振应用程序,我正在使用此插件显示 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}");
                      },

但唯一的问题是我可以找到一种合适的方法将其保存到 firebase,我不需要 date 我只需要 TimeOfDay。

【问题讨论】:

    标签: firebase flutter dart google-cloud-firestore dart-pub


    【解决方案1】:

    Firestore 中没有用于存储时间的特定数据类型,因此您必须将其映射到现有类型之一。

    一些常见的映射是:

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

    所有这些都有有效的用例,因此请选择最适合您的应用用例的一个。

    【讨论】:

    • 非常感谢 Frank 的宝贵回答,我决定针对您的应用提出第三条建议,我将 timeOfDay 转换为固定日期的时间戳并作为时间戳值存储到 firestore ,然后我从 Firestore 中检索时间戳并将其转换回 TimeOfDay。再次感谢你:)
    猜你喜欢
    • 1970-01-01
    • 2021-03-14
    • 2020-09-23
    • 1970-01-01
    • 2021-08-31
    • 2021-11-19
    • 2017-04-14
    • 2020-10-20
    • 1970-01-01
    相关资源
    最近更新 更多