做過web開發的小夥伴們多少會遇到時間轉換問題在Chrome瀏覽器和Safari瀏覽器的不同,報錯或者時間格式等等,這里我就分享一下我在開發過程中遇到的一些問題
關於時間問題,做過日歷的都知道,全球化時區處理,或者時間格式,或者時間戳轉化,這里我就這幾種情況一一討論
由於微信小程序的部分業務需要預定,所以會出現國外預定到國內時間會有偏差的問題,根本原因還是在於new Date(),它會獲取當前系統時間,大部分手機是設置的是自動時間,所以會出現時區的偏差問題。
思考 :如果產品是某地的,那麼預定時間應該為對應地的時區計算。所以需要維護定位與時區之間的關系
關於時區計算,因為我這邊只用到了北京時間的情況,舉個例子:
Safari瀏覽器中,進行 new Date("yyyy-MM-dd hh:mm:ss") 的時候,會出現報錯Invalid Date,或者轉換出問題的情況,原因是Safari並不支持此格式,所以需要調整格式化的方式。
ECMA-262 標准中( Date Time String Format )將日期格式規定為 YYYY-MM-DDTHH:mm:ss.sssZ ,其中, T 標識時間開始, Z 為相對於UTC(協調世界時 - International Atomic Time)的時間偏移量,可為 Z , +HH:mm 或 -HH:mm 。
思考 :要麼正則替換為標準的 / 分割,要麼在中間空白處加上 T ,看自己喜好
看文檔是支持直接毫秒數時間戳轉Date對象的,正常操作也是如此。
PS :但是在微信小程序的iOS端轉過來的實際時間是UTC的時間,所以需要同步為當前時區時間,為了不影響Android的時間結果,所以通過轉換2次的方式解決時間計算問題。
ECMA-262 標准來源參考: https://www.jianshu.com/p/a11196377048