从服务器我得到一个datetime变量的格式:6/29/2011 4:52:48 PM,它是UTC时间。我想使用JavaScript将其转换为当前用户的浏览器时区。
如何使用JavaScript或jQuery来做到这一点?
从服务器我得到一个datetime变量的格式:6/29/2011 4:52:48 PM,它是UTC时间。我想使用JavaScript将其转换为当前用户的浏览器时区。
如何使用JavaScript或jQuery来做到这一点?
当前回答
这是一个普遍的解决方案:
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();
其他回答
JSON日期字符串(在c#中序列化)看起来像“2015-10-13T18:58:17”。
在angular中,(遵循Hulvej)创建一个localdate过滤器:
myFilters.filter('localdate', function () {
return function(input) {
var date = new Date(input + '.000Z');
return date;
};
})
然后,像这样显示本地时间:
{{order.createDate | localdate | date : 'MMM d, y h:mm a' }}
在最后添加时区,在本例中是'UTC':
theDate = new Date( Date.parse('6/29/2011 4:52:48 PM UTC'));
之后,使用toLocale()*函数族以正确的地区显示日期
theDate.toLocaleString(); // "6/29/2011, 9:52:48 AM"
theDate.toLocaleTimeString(); // "9:52:48 AM"
theDate.toLocaleDateString(); // "6/29/2011"
对我来说,这很有效
if (typeof date === "number") {
time = new Date(date).toLocaleString();
} else if (typeof date === "string"){
time = new Date(`${date} UTC`).toLocaleString();
}
对我来说,上述解决方案并不奏效。
在IE中,UTC日期-时间到本地的转换有点棘手。 对我来说,来自web API的日期-时间是“2018-02-15T05:37:26.007”,我想按照当地时区进行转换,所以我使用了下面的JavaScript代码。
var createdDateTime = new Date('2018-02-15T05:37:26.007' + 'Z');
把这个函数记在脑子里:
<script type="text/javascript">
function localize(t)
{
var d=new Date(t+" UTC");
document.write(d.toString());
}
</script>
然后为页面主体中的每个日期生成以下内容:
<script type="text/javascript">localize("6/29/2011 4:52:48 PM");</script>
删除GMT和时区,修改以下行:
document.write(d.toString().replace(/GMT.*/g,""));