Javascript 如何将UTC时间转换为本地时间

Javascript 如何将UTC时间转换为本地时间,javascript,timezone,Javascript,Timezone,您好,我正在将UTC时间从服务器传送到客户端浏览器。时间显示正确,但时区显示不正确。以下是时间是如何显示的: 2014年7月15日星期二19:35:00 GMT-0500 日期和时间正确,但时区不正确。我只想把GMT-0500改成UTC。当我将其更改为UTC时,我可以将其转换为本地时间。即使您接收到UTC时间,javascript对象也将始终显示为控制台中的本地时间。例如: var date = new Date(1405458751062); 给我这个: Tue Jul 15 2014 17

您好,我正在将UTC时间从服务器传送到客户端浏览器。时间显示正确,但时区显示不正确。以下是时间是如何显示的:

2014年7月15日星期二19:35:00 GMT-0500


日期和时间正确,但时区不正确。我只想把GMT-0500改成UTC。当我将其更改为UTC时,我可以将其转换为本地时间。

即使您接收到UTC时间,javascript对象也将始终显示为控制台中的本地时间。例如:

var date = new Date(1405458751062);
给我这个:

Tue Jul 15 2014 17:12:31 GMT-0400
您必须获取该日期对象并输出特定属性

例如UTC:

date.getUTCFullYear() + "-" + (date.getUTCMonth() + 1) + "-" + date.getUTCDate() + " " + date.getUTCHours() + ":" + date.getUTCMinutes();
date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes();
产出:

2014-7-15 21:12
2014-7-15 17:12
或当地时间:

date.getUTCFullYear() + "-" + (date.getUTCMonth() + 1) + "-" + date.getUTCDate() + " " + date.getUTCHours() + ":" + date.getUTCMinutes();
date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes();
产出:

2014-7-15 21:12
2014-7-15 17:12
在我看来,你似乎在错误地解析你的约会,因为19:35还没有到来。您需要确保正确解析日期,以便在将日期对象输出到控制台(例如,
console.log(date)
)时,它将在浏览器的本地时间中显示日期。从这里开始,您必须使用与上述类似的方法在UTC中正确设置日期格式


不过我还是建议使用。它让生活变得轻松:

var date = moment(1405458751062); 
date.toString();         // returns Tue Jul 15 2014 17:12:31 GMT-0400
date.utc().toString();   // returns Tue Jul 15 2014 21:12:31 GMT+0000
date.local().toString(); // returns Tue Jul 15 2014 17:12:31 GMT-0400

该库还可以很容易地格式化日期。

即使您接收到UTC时间,javascript对象也将始终显示为控制台中的本地时间。例如:

var date = new Date(1405458751062);
给我这个:

Tue Jul 15 2014 17:12:31 GMT-0400
您必须获取该日期对象并输出特定属性

例如UTC:

date.getUTCFullYear() + "-" + (date.getUTCMonth() + 1) + "-" + date.getUTCDate() + " " + date.getUTCHours() + ":" + date.getUTCMinutes();
date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes();
产出:

2014-7-15 21:12
2014-7-15 17:12
或当地时间:

date.getUTCFullYear() + "-" + (date.getUTCMonth() + 1) + "-" + date.getUTCDate() + " " + date.getUTCHours() + ":" + date.getUTCMinutes();
date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate() + " " + date.getHours() + ":" + date.getMinutes();
产出:

2014-7-15 21:12
2014-7-15 17:12
在我看来,你似乎在错误地解析你的约会,因为19:35还没有到来。您需要确保正确解析日期,以便在将日期对象输出到控制台(例如,
console.log(date)
)时,它将在浏览器的本地时间中显示日期。从这里开始,您必须使用与上述类似的方法在UTC中正确设置日期格式


不过我还是建议使用。它让生活变得轻松:

var date = moment(1405458751062); 
date.toString();         // returns Tue Jul 15 2014 17:12:31 GMT-0400
date.utc().toString();   // returns Tue Jul 15 2014 21:12:31 GMT+0000
date.local().toString(); // returns Tue Jul 15 2014 17:12:31 GMT-0400

该库还可以很容易地格式化日期。

如果时间在错误的时区正确显示,则原始日期时间不正确。将其正确解析为UTC,并使用UTC输出方法。如果时间正确显示在错误的时区,则原始日期时间不正确。将其正确解析为UTC,并使用UTC输出方法。小心。如果从各个部分开始构建字符串,则需要在月份字段中添加1,因为
Date
对象使用的是0-11个月,而不是1-12个月。您可能还希望对每个字段进行零填充+“目前为1.js解决方案,”MattJohnson修复。我忘了在javascript中,月份是零索引的(可能是因为我已经用moment.js格式化日期很久了,哈哈),小心点。如果从各个部分开始构建字符串,则需要在月份字段中添加1,因为
Date
对象使用的是0-11个月,而不是1-12个月。您可能还希望对每个字段进行零填充+“目前为1.js解决方案,”MattJohnson修复。我忘记了在javascript中,月份是零索引的(可能是因为我已经用moment.js格式化日期很久了,哈哈)