我有一个毫秒的时间,即1274203800000,现在我想在javascript中将其转换为GMT + 10。
目前我正在使用以下代码来执行此操作
var milliseconds=1274203800000;
var offset='+10';
var d = new Date(milliseconds);
utc = d.getTime() + (d.getTimezoneOffset() * 60000);
nd = new Date(utc + (3600000*offset));
var result=nd.toLocaleString();
alert(result);
以上代码评估为“2010年5月19日星期三上午3:30:00”,但这不是正确的输出“2010年5月18日星期二3:30:00”(不确定AM)或者在这种情况下PM)是正确的。但我不知道这里的问题是什么。
我目前的本地时区是GMT + 0530。
答案 0 :(得分:4)
在这里,我可以获得所需的输出
var milliseconds=1274203800000;
var offset=10;
var d = new Date(milliseconds+(3600000*offset));
alert(d.toUTCString());
Initial Input: Tue, 18 May 2010 17:30:00 GMT
Desired Output: Wed, 19 May 2010 03:30:00 GMT
答案 1 :(得分:2)
时间戳以UTC格式保存。 1274203800000
对应2010-05-18 17:30:00 UTC
,确实是2010-05-19 03:30:00 UTC+10
。我不知道你将如何从该时间戳获得2010-05-18 03:30:00
- 它必须是UTC-14,并且没有国家将其作为时区。
(除此之外:在您的代码中,第一次使用new Date().getTime()
没有做任何事情,因为它会返回相同的milliseconds
。)
ETA:您无法控制toLocaleString()
的格式,格式来自用户的操作系统和浏览器设置。在我的机器上,我得到12小时制,并包含时区名称。这很烦人,因为我认为12-hour time is a total disaster that should be wiped from the face of the planet和时区实际上是错误的。
但无论如何,如果你想要一个特定的时间格式,你必须自己创建它,因为JS没有提供格式化选项。这可能非常繁琐:
var daynames= ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
var monthnames= ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
function padLeft(s, l, c) {
return new Array(l-s.length+1).join(c || ' ')+s;
};
function to12HourTime(x) {
var dn= daynames[x.getUTCDay()];
var mn= monthnames[x.getUTCMonth()];
var d= padLeft(''+x.getUTCDate(), 2, '0');
var y= padLeft(''+x.getUTCFullYear() ,4, '0');
var h= x.getUTCHours();
var m= padLeft(''+x.getUTCMinutes(), 2, '0');
var s= padLeft(''+x.getUTCSeconds(), 2, '0');
var p= h>=12? 'PM' : 'AM';
h= (h+11)%12+1;
return dn+', '+mn+' '+d+', '+y+' '+h+':'+m+':'+s+' '+p;
}
var t= 1274203800000;
var d= new Date(t+1000*60*60*10);
alert(to12HourTime(d));
// Wednesday, May 19, 2010 3:30:00 AM
答案 2 :(得分:0)
1274203800000 in Epoch is the,2010年5月18日17:30:00 GMT
(您可以使用此Epoch转换器http://www.epochconverter.com/)
现在,如果你这样做:
var milliseconds=1274203800000;
var d = new Date(milliseconds);
alert(d.toUTCString());
你得到正确的GMT时间。