Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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
如何在Firebase函数中将Firebase Firestore时间戳转换为Zulu datetime格式_Firebase_Datetime_Google Cloud Firestore_Timestamp_Google Cloud Functions - Fatal编程技术网

如何在Firebase函数中将Firebase Firestore时间戳转换为Zulu datetime格式

如何在Firebase函数中将Firebase Firestore时间戳转换为Zulu datetime格式,firebase,datetime,google-cloud-firestore,timestamp,google-cloud-functions,Firebase,Datetime,Google Cloud Firestore,Timestamp,Google Cloud Functions,我在Firestore文档中有一个时间戳字段。(请参阅第页) 我想把它传递给服务器一个Datetime Zulu时间格式,如下所示 2019-10-31T10:29:45Z 如何将Firestore时间戳转换为Zulu时间格式字符串 这是我在Firebase中的onCreate函数,在firestore中创建文档时,我读取时间戳字段并打印到控制台 exports.createRecord = functions.firestore .document(`record/{recordId}

我在Firestore文档中有一个时间戳字段。(请参阅第页)

我想把它传递给服务器一个Datetime Zulu时间格式,如下所示

2019-10-31T10:29:45Z
如何将Firestore时间戳转换为Zulu时间格式字符串

这是我在Firebase中的onCreate函数,在firestore中创建文档时,我读取时间戳字段并打印到控制台

exports.createRecord = functions.firestore
  .document(`record/{recordId}`)
  .onCreate(async (snap, context) => {

  console.log(snap.data().created_at);

});  
这将显示在Firebase功能日志中

Timestamp { _seconds: 1573496322, _nanoseconds: 897429000 }
如何将其转换为以下形式:

2019-11-01T01:36:56.233018Z
2019-01-01T00:00:00Z
2019-10-31T10:29:45Z
对象不是Javascript
Date
对象的扩展。但是它包含一个方法来获取一个常规的
Date
对象,您可以使用它轻松地将所需的日期格式化为字符串

云函数在没有时区偏移(UTC时间)的情况下运行。所以,当你格式化日期时,你可以有效地获得祖鲁时间。用于获取所需格式的字符串

toISOString()方法返回简化扩展ISO格式(ISO 8601)的字符串,该格式的长度始终为24或27个字符(分别为YYYY-MM-DDTHH:MM:ss.sssZ或±YYYYY-MM-DDTHH:MM:ss.sssZ)。时区始终为零UTC偏移,由后缀“Z”表示

尝试将上面的代码更改为此,您将看到预期的输出

exports.createRecord=functions.firestore
.document(`record/{recordId}`)
.onCreate(异步(快照、上下文)=>{
console.log(snap.data().created_at.toDate().toISOString());
});  
其他资源

如果您有更复杂的操作日期或使用时区的需要,它是一个非常好用的库。它为函数依赖项增加了一些开销,但确实有助于代码的可读性。

对象不是Javascript
Date
对象的扩展。但是它包含一个方法来获取一个常规的
Date
对象,您可以使用它轻松地将所需的日期格式化为字符串

云函数在没有时区偏移(UTC时间)的情况下运行。所以,当你格式化日期时,你可以有效地获得祖鲁时间。用于获取所需格式的字符串

toISOString()方法返回简化扩展ISO格式(ISO 8601)的字符串,该格式的长度始终为24或27个字符(分别为YYYY-MM-DDTHH:MM:ss.sssZ或±YYYYY-MM-DDTHH:MM:ss.sssZ)。时区始终为零UTC偏移,由后缀“Z”表示

尝试将上面的代码更改为此,您将看到预期的输出

exports.createRecord=functions.firestore
.document(`record/{recordId}`)
.onCreate(异步(快照、上下文)=>{
console.log(snap.data().created_at.toDate().toISOString());
});  
其他资源


如果您有更复杂的操作日期或使用时区的需要,它是一个非常好用的库。它为函数依赖性增加了一些开销,但确实有助于代码的可读性。

我建议为您使用的语言找到一个日期操纵库,并使用它格式化日期。Firestore SDK将无法为您执行此操作。请注意,Firestore时间戳也不会对时区进行编码。我认为应该这样做,我希望在Firebase函数中实现这一点,并向服务器发送http post。您询问的格式不是“祖鲁时间格式”。这是一种格式,也被定义为“完整表示扩展”格式。但是,不清楚你在问什么。您提到了
onCreate
函数,但显示了
onRequest
的示例。我可以看到,
onCreate
提供了一个
上下文
,它反过来提供了一个已经是RFC3339格式的
时间戳。那么您需要在哪里进行转换呢?如果在
处创建的
是您自己数据中的一个字段,那么代码中引用的数据在哪里?请编辑您的问题以准确显示您正在尝试的代码。谢谢。我还没有实现onCreate()函数,所以这是需要做的事情(当我们弄清楚onCreate应该触发对firestore的插入时,我们将讨论这一部分)。在创建包含时间戳的文档时,我想将该信息传递给服务器端,服务器需要这种类型的时间格式“2019-10-31T10:29:45Z”。如果您说时间戳已经转换为RFC3339,那么这个问题就无关紧要了。这意味着,一旦我找到oncreate,并从文档中提取时间戳,我需要尝试并更新它。我建议为您正在使用的语言找到一个日期操纵库,并使用它格式化日期。Firestore SDK将无法为您执行此操作。请注意,Firestore时间戳也不会对时区进行编码。我认为应该这样做,我希望在Firebase函数中实现这一点,并向服务器发送http post。您询问的格式不是“祖鲁时间格式”。这是一种格式,也被定义为“完整表示扩展”格式。但是,不清楚你在问什么。您提到了
onCreate
函数,但显示了
onRequest
的示例。我可以看到,
onCreate
提供了一个
上下文
,它反过来提供了一个已经是RFC3339格式的
时间戳。那么您需要在哪里进行转换呢?如果在
处创建的
是您自己数据中的一个字段,那么代码中引用的数据在哪里?请编辑您的问题以准确显示您正在尝试的代码。谢谢。我还没有实现onCreate()函数,所以这是需要做的事情(当我们弄清楚onCreate应该触发对firestore的插入时,我们将讨论这一部分)。在创建包含时间戳的文档时,我想将该信息传递给服务器端,服务器需要这种类型的时间格式“2019-10-31T10:29:45Z”。如果您说时间戳已经转换为RFC3339,那么这个问题是