Date對象 IOS踩坑

Date對象 IOS踩坑

最近在作一個託管教師端小程序,裏面有一個功能是選擇某個日期加載該老師相關的課程,這裏就須要用到日曆組件。基於後臺返回的數據及減小對日曆組件的修改,我選擇了對小程序一開始自配備的轉換時間格式方法進行了修改。用起來也沒有太大毛病,坑就在這裏埋下了。小程序

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, "/");
};

總結

不要輕易的去改微信小程序提供工具類的代碼,爲何用"/"多是有緣由的,微信已經幫你兼容好了。不然,就像我同樣浪費時踩來踩去的間在這個坑裏測試

相關文章
相關標籤/搜索