在react-native开发中,后台给我门前端过一个时间数据 xxxx-xx-xxT00:00:00,我们需要把它转换为北京时间只显示年月日。所以我第一个想到的就是:
let data = '--'
let dataee = new Date(itemDate).toJSON();
new Date(+new Date(dataee)+8*3600*1000).toISOString().replace(/\.[\d]{3}Z/,'');
data = date.split('T')[0]
在我们自己的调试中是没有问题的,可以达到我们的要求。但是在真机中就有问题了。
直接显示1970 1-1-1。
换一种方法:
const date_ = new Date(itemDate);
const year = date_.getFullYear() ;
const month = date_.getMonth() + 1;
const datee = date_.getDate() ;
data = year + '-' + month + '-' + datee
结果还是不行。
查看了很多资料才发现原因(转载于:https://www.cnblogs.com/xiangming25/p/7243118.html):
1. 使用new Date()获取时间,取的时间的设备是什么?
如果是使用xcode给真机装的debug包,它请求的时间是给它安装的电脑的本地时间,而不是请求的手机的本地时间.
2. ios 手机上使用new Date()设置一个具体的时间
不能用 new Date('2017-08-01'), 需要使用new Date('2017/08/01 00:00:00');
并且,这个在debug上不会出现问题,在release安装到真机上时, 使用new Date('2017-08-01').getTime()获取到的时间戳是NaN.
解决办法:
后来我使用了 moment 完美解决。
moment 详细使用方法请看:http://momentjs.cn/