小程序開發之雲函數中的時區問題

本文原創首發於個人我的博客 一個賈程序員,文章原地址 點此 查看程序員

在小程序的開發中,有時候須要知道服務器的時間,好比打卡之類的業務需求(使用本地時間存在被用戶篡改時間的風險)。而若是使用的是小程序的雲開發,就能夠寫一個雲函數,經過這個雲函數返回時間給小程序使用,但云函數中的時間卻存在一些問題。數據庫

先在雲函數中建立一個 Date 對象,而後將這個對象分別打印 log 和保存到數據庫,這時發現,同一個 Date 對象,打印 log 顯示的時間和保存到數據庫的時間倒是不同的。小程序

var date = new Date();
  console.log("服務器時間: ", date)
  return db.collection("date").add({
    data: {
      date: date
    }
  })

能夠看到,打印 log 顯示的是時區 0 的時間,保存到數據庫顯示的是時區 8 的時間,這種不統一就比較坑。因此爲了不一些問題,最好使用時間戳,無論是保存到數據庫,仍是返回給小程序,同一個 Date 對象的時間戳都是一致的。服務器

var date = new Date().getTime();
  console.log("服務器時間: ", date)
  return db.collection("date").add({
    data: {
      date: date
    }
  })

而後咱們在真正用到時間的時候,再對這個時間戳進行轉換便可。在建立 Date 對象的時候,將時間戳做爲參數傳進去就能夠獲得時間。函數

var timestamp = 1545489839304;
var date = new Date(timestamp);

經過上面的時間戳,能夠獲得時間爲 Sat Dec 22 2018 22:43:59 GMT+0800 (CST)。3d

相關文章
相關標籤/搜索