原因: new Date(CST)。new Date通过解析currentDateStr返回一个long类型的时间差(UTC时间)来构造日期对象,但这个解析的过程中,如果遇到CST,会被认为是指北美的时区,比格林威治时间(GMT)晚6个小时,按照转换关系,转成UTC需要加6个小时。而在输出receivedCurrentDate的时候会调用toString方法,会根据所在的时区格式化输出日期,也就是将UTC转成China Standard Time,需要加8个小时,所以就出现了相差14个小时
var SCTTIME = 'Tue Apr 09 09:09:11 CST 2019';
var date = new Date(SCTTIME);
console.log(date)// Tue Apr 09 2019 23:09:11 GMT+0800 (中国标准时间)
var datetime = date.Format("YY-MM-dd hh:mm");
//解决办法:
function dateToGMT(strDate){
var dateStr=strDate.split(" ");
var strGMT = dateStr[0]+" "+dateStr[1]+" "+dateStr[2]+" "+dateStr[5]+" "+dateStr[3]+" GMT+0800";
var date = new Date(Date.parse(strGMT));
return date;
}
var SCTTIME = 'Tue Apr 09 09:09:11 CST 2019';
var date = dateToGMT(SCTTIME);
console.log(date)// Tue Apr 09 2019 09:09:11 GMT+0800 (中国标准时间)