如何在Firebase函数中将Firebase Firestore时间戳转换为Zulu datetime格式
我在Firestore文档中有一个时间戳字段。(请参阅第页) 我想把它传递给服务器一个Datetime Zulu时间格式,如下所示如何在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}
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
对象不是JavascriptDate
对象的扩展。但是它包含一个方法来获取一个常规的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());
});
其他资源
如果您有更复杂的操作日期或使用时区的需要,它是一个非常好用的库。它为函数依赖项增加了一些开销,但确实有助于代码的可读性。对象不是JavascriptDate
对象的扩展。但是它包含一个方法来获取一个常规的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,那么这个问题是