Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Flatter';s日期时间选择器,并将其作为时间戳写入Firebase_Firebase_Flutter_Timestamp - Fatal编程技术网

如何从Flatter';s日期时间选择器,并将其作为时间戳写入Firebase

如何从Flatter';s日期时间选择器,并将其作为时间戳写入Firebase,firebase,flutter,timestamp,Firebase,Flutter,Timestamp,我使用如下的日期选择器来允许用户设置日期。我想将此选定日期和时间保存为Firebase的时间戳。我该怎么做 谢谢 showDatePicker( context: context, initialDate: widget.isUpdating ? _currentExpense.createdAt.toDate() : _dateTime, //_currentExpense.createdAt ==

我使用如下的日期选择器来允许用户设置日期。我想将此选定日期和时间保存为Firebase的时间戳。我该怎么做

谢谢

showDatePicker(
          context: context,
          initialDate: widget.isUpdating
              ? _currentExpense.createdAt.toDate()
              : _dateTime, //_currentExpense.createdAt == null,
          firstDate: DateTime(2001),
          lastDate: DateTime.now())
      .then((date) {
    _dateTime = date;
    setState(() {
      dateTimeText = _getDateString(date);
    });
  });

您可以使用
dateTimeObject.millissecondssinceepoch
将其转换为
int
,并将其保存到数据库中

然后使用
DateTime.fromsintfromsincepoch(msIntFromServer)
将其转换回DateTime对象

或者如果你想要更高的精确度,你可以在几微秒内完成


您可以使用
dateTimeObject.millissecondssinceepoch
将其转换为
int
并保存到数据库中

然后使用
DateTime.fromsintfromsincepoch(msIntFromServer)
将其转换回DateTime对象

或者如果你想要更高的精确度,你可以在几微秒内完成


我想出来了。我在网上看到一个帖子 这完全符合Er1先前的建议

对于任何寻求帮助的人,这里有一个技巧:

  Timestamp _dateTimeToTimestamp(DateTime dateTime) {
    return Timestamp.fromMillisecondsSinceEpoch(
        dateTime.millisecondsSinceEpoch);
  }

onTap: () {
  showDatePicker(
          context: context,
          initialDate: widget.isUpdating
              ? _currentExpense.updatedAt.toDate()
              : DateTime.now(),
          firstDate: DateTime(2001),
          lastDate: DateTime.now())
      .then((date) {
    _dateTime = date;
    print(_dateTime);

    setState(() {
      dateTimeText = _dateTimeToString(_dateTime);

      if (widget.isUpdating) {
        _currentExpense.updatedAt = _dateTimeToTimestamp(_dateTime);
      } else {
//this is new entry
        _currentExpense.createdAt = _dateTimeToTimestamp(_dateTime);
        _currentExpense.updatedAt = _dateTimeToTimestamp(_dateTime);
        }
     });
   });
    

我想出来了。我在网上看到一个帖子 这完全符合Er1先前的建议

对于任何寻求帮助的人,这里有一个技巧:

  Timestamp _dateTimeToTimestamp(DateTime dateTime) {
    return Timestamp.fromMillisecondsSinceEpoch(
        dateTime.millisecondsSinceEpoch);
  }

onTap: () {
  showDatePicker(
          context: context,
          initialDate: widget.isUpdating
              ? _currentExpense.updatedAt.toDate()
              : DateTime.now(),
          firstDate: DateTime(2001),
          lastDate: DateTime.now())
      .then((date) {
    _dateTime = date;
    print(_dateTime);

    setState(() {
      dateTimeText = _dateTimeToString(_dateTime);

      if (widget.isUpdating) {
        _currentExpense.updatedAt = _dateTimeToTimestamp(_dateTime);
      } else {
//this is new entry
        _currentExpense.createdAt = _dateTimeToTimestamp(_dateTime);
        _currentExpense.updatedAt = _dateTimeToTimestamp(_dateTime);
        }
     });
   });
    

谢谢所以,为了澄清,时间戳基本上是以毫秒或微秒的形式保存的?而且,使用您的建议意味着我必须在我的数据库中将_currentExpense.createdAt保存为int,而不是时间戳?在我的setState()中,我做了,_currentExpense.createdAt=_dateTime.millissecondssinceepoch作为时间戳;但是它没有成功地保存到DB,因为它需要一个时间戳,而我正在发送一个int作为值。@hermie_brown我只是说你可以将它保存为int。如果你已经在DB中使用了指定的时间戳格式,你应该看看firebase或你正在使用的库中的文档,了解如何将时间戳格式化为该格式格式。谢谢!所以,为了澄清,时间戳基本上是以毫秒或微秒的形式保存的?而且,使用您的建议意味着我必须在我的数据库中将_currentExpense.createdAt保存为int,而不是时间戳?在我的setState()中,我做了,_currentExpense.createdAt=_dateTime.millissecondssinceepoch作为时间戳;但是它没有成功地保存到DB,因为它需要一个时间戳,而我正在发送一个int作为值。@hermie_brown我只是说你可以将它保存为int。如果你已经在DB中使用了一种指定的时间戳格式,你应该看看firebase或你正在使用的库中的文档,了解如何将时间戳格式化为该格式。