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, "/");
};
总结
不要随意马虎的去改微信小顺序供应东西类的代码,为什么用”/”多是有缘由的,微信已帮你兼容好了。不然,就像我一样浪费时踩来踩去的间在这个坑里