new Date("Sat Dec 10 15:30:34 CST 2016")得到时间有误差

后来我发现下面的这种解决方法在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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值