关于new Date()在ios端的坑

问题:

今天做一个简单的业务逻辑,就是拿到两个类似xxxx-xx-xx xx:xx的日期进行比较大小。
第一念头就是把这日期字符串放到new Date("xxxx-xx-xx xx:xx")然后getTime()一下拿到两个时间戳进行比较就完事了。
然而,然而,然而......

(new Date("xxxx-xx-xx xx:xx")).getTime()这样在安卓和PC浏览器都能正确获取,唯独在ios端没能正确获取。

然后在ios端真机上断点打印一下(new Date("xxxx-xx-xx xx:xx")).getTime(),返回了NaN!!WTF??????👿💢💢💢

再打印了一下new Date("xxxx-xx-xx xx:xx"),返回valid Date空对象,WTF???这又是什么鬼?👿💢💢💢

纠结了许久,到底什么问题,赶紧度娘走一波😂发现ios端的new Date()是有格式要求的,目前年月日只支持xxxx/xx/xx,是固定有“ / ”分割的, 真的是哔了🐕了。

解决:

既然规定是“ / ”分割,那就替换一下“ - ”呗
let str="xxxx-xx-xx xx:xx";str=str.replace(/-/g, "/");搞定👌

完整:let t=(new Date("xxxx-xx-xx xx:xx".replace(/-/g, "/"))).getTime();

多哔哔两句:

Safari和IE没有测试过,不知道会不会有这样的问题(什么?兼容IE?再见!);
安卓和ios上的微信中的浏览器内核是不一样的,这也会导致上面的安卓和ios中new Date的差别。

(手打原创,多多支持,谢谢!)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • JavaScript 1. type 类型判断 isString (o) {//是否字符串 returnObjec...
    Mr_ZhangH阅读 3,780评论 0 1
  • 以下是常用的代码收集,学习用。转自豪情博客园 1. PC - js 返回指定范围的随机数(m-n之间)的公式 re...
    自由加咖啡阅读 4,635评论 0 1
  • 100个常用的javascript函数 1、原生JavaScript实现字符串长度截取 复制代码代码如下: fun...
    老头子_d0ec阅读 2,828评论 0 0
  • 第五章******************************************************...
    fastwe阅读 3,984评论 0 0
  • 全系列文章索引: IOS开发问题索引(一) IOS开发问题索引(二) IOS开发问题索引(三) IOS开发问题索引...
    Kevin_Junbaozi阅读 4,955评论 0 0