React native new Date() with some bug

时间戳

时间戳,指的就是Unix时间戳(Unix timestamp)。它也被称为Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。因此,严格来说,不管你处在地球上的哪个地方,任意时间点的时间戳都是相同的。

1.使用new Date()获取时间,取的时间的设备是什么?

如果是使用xcode给真机装的debug包,它请求的时间是电脑的本地时间,而不是请求的手机的本地时间.

2.new Date('2017-09-13 00:13:28') debug 环境 ok
release 为invalid。

ios 需要使用new Date('2017/08/01 00:00:00');

  1. 根据一个给定的时间 和当前时间做对比的时候,一定不能使用yyyy-MM-DD 格式 而要使用yyyy-MM-DD 这种格式

因为一方面 yyyy-MM-DD 格式在Safari 上有兼容性问题,另一方面 还有时区的问题

时区问题和兼容性问题对比
Chrome 浏览器

 new Date('2020-01-03')
Fri Jan 03 2020 08:00:00 GMT+0800 (中国标准时间)
 new Date('2020-01-03 00:00:00')
Fri Jan 03 2020 00:00:00 GMT+0800 (中国标准时间)
 new Date('2020/01/03')
Fri Jan 03 2020 00:00:00 GMT+0800 (中国标准时间)
 new Date('2020/01/03 00:00:00')
Fri Jan 03 2020 00:00:00 GMT+0800 (中国标准时间)

Safari 浏览器

>  new Date('2020-01-03')

< Fri Jan 03 2020 08:00:00 GMT+0800 (CST)
>  new Date('2020-01-03 00:00:00')

< Invalid Date
>  new Date('2020/01/03')

< Fri Jan 03 2020 00:00:00 GMT+0800 (CST)
>  new Date('2020/01/03 00:00:00')

< Fri Jan 03 2020 00:00:00 GMT+0800 (CST)

由上面可以直观看出 使用yyyy/MM/DD 最为安全。

下面是平台兼容性测试结果,可以使用如下的方法,但是建议使用moment.js

你可能感兴趣的:(React native new Date() with some bug)