将UTC日期时间转换为本地日期时间
从服务器中,我得到这种格式的日期时间变量: 6/29/2011 4:52:48 PM
,它是UTC时间。 我想使用JavaScript将其转换为当前用户的浏览器时间。
如何使用JavaScript或jQuery完成这项工作?
在将其转换为javascript中的日期之前,将“UTC”附加到字符串:
var date = new Date('6/29/2011 4:52:48 PM UTC');
date.toString() // "Wed Jun 29 2011 09:52:48 GMT-0700 (PDT)"
这是一个通用的解决方案:
function convertUTCDateToLocalDate(date) {
var newDate = new Date(date.getTime()+date.getTimezoneOffset()*60*1000);
var offset = date.getTimezoneOffset() / 60;
var hours = date.getHours();
newDate.setHours(hours - offset);
return newDate;
}
用法:
var date = convertUTCDateToLocalDate(new Date(date_string_you_received));
根据客户端本地设置显示日期:
date.toLocaleString();
在我看来,服务器应该总是在一般情况下以标准化的ISO 8601格式返回日期时间。
更多信息在这里:
在这种情况下,服务器将返回'2011-06-29T16:52:48.000Z'
,它将直接馈入JS Date对象。
var utcDate = '2011-06-29T16:52:48.000Z'; // ISO-8601 formatted date returned from server
var localDate = new Date(utcDate);
localDate
将在当地时间正确,在我的情况下是两小时后(DK时间)。
只要符合服务器期望的格式,您实际上不必执行所有这些解析,只会使问题复杂化。
链接地址: http://www.djcxy.com/p/18753.html