后来我发现下面的这种解决方法在pc端是可行的,在移动端是不行的,移动端不认识(now + ’ GMT+8’)这个拼出来的字符串。因为now是通过vm变量$!nowDate传给我的,所以我对这个变量进行了处理,得到了startTime 。再对startTime 进行处理时间就不会有误差了。
var startTime = "$!date.format('yyyy/MM/dd HH:mm:ss',$!nowDate)";
//下面是之前的解决方法
昨天遇到一个问题,就是后台传给我一个表示时间的字符串,我需要转换为2016/12/10格式的。输入参数是Sat Dec 10 15:30:34 CST 2016 ,返回得到的日期却是2016/12/11,时间有误差。代码如下:
function getCurrentDate(now){
var current = new Date(now);
var year = current.getFullYear();
var month = current.getMonth() + 1;
var day = current.getDate();
return year+"/"+month+"/"+day;
}
打断点发现得到的current等于Sun Dec 11 2016 05:30:34 GMT+0800 (中国标准时间),后来查找原因,发现是因为时区的问题。
在这个表示日期的字符串参数Sat Dec 10 15:30:34 CST 2016中CST表示中国时间,而CST比格林威治时间晚6个小时。而北京时间比比格林威治时间(即世界时)早8小时。这里now的值为当地时间,即北京时间,因此需要在原来的基础上加了 6+8=14小时。
解决方法就是: 需要将时间调整为“Sat Dec 10 15:30:34 CST 2016 GMT+8”
function getCurrentDate(now){
var current = new Date(now + ' GMT+8');
var year = current.getFullYear();
var month = current.getMonth() + 1;
var day = current.getDate();
return year+"/"+month+"/"+day;
}