簡體   English   中英

將firestore時間戳轉換為不同的格式

[英]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 TimestamptoDate()方法:

將時間戳轉換為 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 日星期五

閱讀更多: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM