java 返回的CST时间格式 new Date()后多出14h

原因: 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 (中国标准时间)

你可能感兴趣的:(java 返回的CST时间格式 new Date()后多出14h)