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

总结

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

    原文作者:suan_suan
    原文地址: https://segmentfault.com/a/1190000018185849
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞