當后台給出一個時間,比如:2019-12-02 20:18:43,前端一下會想出好幾種方法來轉化為時間戳:
JS:
data: { date: '2019-12-02 20:18:43', getTime: '', valueOf: '', dateParse: '' }, /** * 生命周期函數--監聽頁面加載 */ onLoad: function (options) { const {date} = this.data; // 方法一 const getTime = new Date(date).getTime(); // 方法二 const valueOf = new Date(date).valueOf(); // 方法三 const dateParse = Date.parse(date); // 設置data值 this.setData({ getTime, valueOf, dateParse}) },
wxml:
<view>時間:{{date}}</view> <view>時間戳getTime:{{getTime}}</view> <view>時間戳valueOf:{{valueOf}}</view> <view>時間戳dateParse:{{dateParse}}</view>
結果肯定會按照我們所想的展示:1575289123000
然后我們分別拿Android和IOS真機測試:
真機測試並未按照我們預想的來,我也是在項目發布之后發現問題的,通過將日期轉化為時間戳過濾優惠券,在用戶發現優惠券不能用之后才發現問題。然后我們換個思路,將 日期中間的 - 換為 /試一下,
const newDate = date.replace(/-/g, '/'); console.log(newDate) // 2019/12/02 20:18:43
如:2019/12/02 20:18:43,
轉化為時間戳如:1575289123000,
小程序控制台也和我們預期的一樣,讓我們來看真機如何
現在來看Android和IOS都能正常顯示。
此類問題並不是小程序單獨所有,所有的JS轉化都有問題,html頁面也存在這樣的問題,感興趣的同學可以自己試試。
由此看來,日期轉化為時間戳,蘋果手機存在bug,日期分隔符必須得用/,而不能用-,最好的辦法就是后台返回時間戳,前端要什么格式自己轉化, 日期比較也方便計算。