[英]convert firestore timestamp to date into different format
時間戳變量存儲在 Firestore 中,提取時為秒和納秒格式,如何將時間戳轉換為 2018-09-19T00:00:00 等格式
let Ref=firebase.firestore().collection("Recruiter").doc(u.uid).collection("Jobs")
Ref.orderBy("timestamp", "desc").onSnapshot(function(snapshot){
$.each(snapshot.docChanges(), function(){
var change= this
if(change.type==="added"){
var ab= new Date(change.doc.data().timestamp)
console.log(ab)
thisIns.RecruiterChart.chartOptions.xaxis.categories.push(
ab
)
console.log( thisIns.RecruiterChart.chartOptions.xaxis.categories)
}
})
})
變量 ab 在控制台上顯示“無效日期”
您應該使用 Firestore Timestamp
的toDate()
方法:
將時間戳轉換為 JavaScript 日期對象。 此轉換會導致精度損失,因為 Date 對象僅支持毫秒精度。
退貨
Date
JavaScript Date 對象表示與此時間戳相同的時間點,精度為毫秒。
因此,您將執行以下操作:
var timestampDate = change.doc.data().timestamp.toDate();
console.log(timestampDate);
然后,您需要根據需要格式化此日期。 最簡單的方法是使用像moment.js
這樣的專用庫,如下所示:
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
// ...
<script>
// ...
var timestampDate = change.doc.data().timestamp.toDate();
var m = moment(timestampDate );
var mFormatted = m.format(); // "2014-09-08T08:02:17-05:00" (ISO 8601, no fractional seconds)
console.log(mFormatted );
// ...
</script>
可以在此處找到使用moment.js
格式化日期的其他可能性。
我想我知道發生了什么。
你的ab
變量應該是字符串格式,對嗎?
首先嘗試將其解析為 Number.. 看看會發生什么。
嘗試記錄以下內容:
var ab= new Date(Number(change.doc.data().timestamp))
console.log(ab)
thisIns.RecruiterChart.chartOptions.xaxis.categories.push(
ab
)
console.log( thisIns.RecruiterChart.chartOptions.xaxis.categories)
或者
var ab= new Date(parseInt(change.doc.data().timestamp, 10))
console.log(ab)
thisIns.RecruiterChart.chartOptions.xaxis.categories.push(
ab
)
console.log( thisIns.RecruiterChart.chartOptions.xaxis.categories)
干杯,
var ab = change.doc.data().timestamp.toDate().toLocaleDateString('en-US')
// 7/2/2021
或者更多:
var ab = change.doc.data().timestamp.toDate().toLocaleDateString('en-US', { weekday:"long", year:"numeric", month:"short", day:"numeric"})
// 2021 年 7 月 2 日星期五
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.