最近在作一個託管教師端小程序,裏面有一個功能是選擇某個日期加載該老師相關的課程,這裏就須要用到日曆組件。基於後臺返回的數據及減小對日曆組件的修改,我選擇了對小程序一開始自配備的轉換時間格式方法進行了修改。用起來也沒有太大毛病,坑就在這裏埋下了。小程序
const formatTime = date => { const year = date.getFullYear() const month = date.getMonth() + 1 const day = date.getDate() const hour = date.getHours() const minute = date.getMinutes() const second = date.getSeconds() return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':') } const formatNumber = n => { n = n.toString() return n[1] ? n : '0' + n } module.exports = { formatTime: formatTime }
因爲開發和調試一直用的是微信開發者工具,在開發過程當中也很順利,直到使用了真機進行測試的。在安卓機上是沒有問題的,但一旦遇到了蘋果機,個人整個功能就垮掉了。排查了好久才發現是日期轉換的問題。微信小程序
在開發中,因爲與日曆相關,確定會大量用到Date對象的。
當使用微信
var date = new Date();
在安卓和蘋果機上是能夠運行且有結果的。
可是在這個項目裏面須要用到根據字符串去獲取日期,而後問題就來了。個人字符串日期格式是2018-01-01類型的微信開發
var date = new Date("2016-05-31");
這段代碼是得到字符中指定的日期,它Firefox、Chrome中就能運行,可是在蘋果手機就會報錯,錯誤是NaN,意思是Not a Number。就是由於這個錯,蘋果手機不能正常運行。函數
var date =new Date("2016/05/31");
這種字符串格式獲取日期在蘋果和安卓機上都能正常運行。因爲代碼中大量用到的是-模式。在使用new Date的時候寫一個函數去轉換一下便可。工具
function GetDateDiff(startDiffTime, endDiffTime) { //將xxxx-xx-xx的時間格式,轉換爲 xxxx/xx/xx的格式 startTime = startDiffTime.replace(/\-/g, "/"); endTime = endDiffTime.replace(/\-/g, "/"); };
不要輕易的去改微信小程序提供工具類的代碼,爲何用"/"多是有緣由的,微信已經幫你兼容好了。不然,就像我同樣浪費時踩來踩去的間在這個坑裏測試