我已经和这个问题斗争了一段时间了。我试图将纪元转换为一个日期对象。该纪元是以UTC为单位发送给我的。每当你传递给new Date()
一个纪元时,它就会假定它是本地纪元。我试着创建一个UTC对象,然后用setTime()
将其调整为合适的纪元,但唯一看起来有用的方法是toUTCString()
,而字符串对我没有帮助。如果我把这个字符串传给一个新的日期,它应该注意到它是UTC,但它没有。
new Date( new Date().toUTCString() ).toLocaleString()
我的下一个尝试是试图获得本地当前纪元和UTC当前纪元之间的差异,但我也没能得到这个。
new Date( new Date().toUTCString() ).getTime() - new Date().getTime()
它只给了我非常小的差异,低于1000,这是以毫秒为单位。
有什么建议吗?
你只是要求将UTC字符串转换为"本地"字符串吗? 你可以这样做。
var utc_string = '2011-09-05 20:05:15';
var local_string = (function(dtstr) {
var t0 = new Date(dtstr);
var t1 = Date.parse(t0.toUTCString().replace('GMT', ''));
var t2 = (2 * t0) - t1;
return new Date(t2).toString();
})(utc_string);
EDIT
var utcDate = new Date(incomingUTCepoch);
var date = new Date();
date.setUTCDate(utcDate.getDate());
date.setUTCHours(utcDate.getHours());
date.setUTCMonth(utcDate.getMonth());
date.setUTCMinutes(utcDate.getMinutes());
date.setUTCSeconds(utcDate.getSeconds());
date.setUTCMilliseconds(utcDate.getMilliseconds());
编辑修复
@Amjad,好主意,但实施得不好。尝试
Date.prototype.setUTCTime = function(UTCTimestamp) {
var UTCDate = new Date(UTCTimestamp);
this.setUTCFullYear(UTCDate.getFullYear(), UTCDate.getMonth(), UTCDate.getDate());
this.setUTCHours(UTCDate.getHours(), UTCDate.getMinutes(), UTCDate.getSeconds(), UTCDate.getMilliseconds());
return this.getTime();
}