年月日轉化為時間戳出現bug


當后台給出一個時間,比如: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,日期分隔符必須得用/,而不能用-,最好的辦法就是后台返回時間戳,前端要什么格式自己轉化, 日期比較也方便計算。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM