Javascript将UTC转换为当地时间

lan*_*boy 37 javascript datetime

好吧,说JSON解析字符串UTC日期如下:

2012-11-29 17:00:34 UTC
Run Code Online (Sandbox Code Playgroud)

现在,如果我想将此UTC日期转换为当地时间,我该怎么做?

如何将其格式化为其他类似的东西yyyy-MM-dd HH:mm:ss z

date.toString('yyyy-MM-dd HH:mm:ss z');永远不会成功:/

ajt*_*rds 47

尝试:

var date = new Date('2012-11-29 17:00:34 UTC');
date.toString();
Run Code Online (Sandbox Code Playgroud)

  • 好吧,我试过IE和Firefox,他们都是NAN!失效日期? (8认同)
  • 这只适用于Chrome浏览器,这在mozilla firefox和IE11中不起作用.你有其他所有浏览器的解决方案吗? (3认同)
  • 似乎很愚蠢,“Date”原型上没有方法返回本地时间而不是 GMT/UTC 的日期对象 (2认同)

Sur*_*bhi 35

var offset = new Date().getTimezoneOffset();
Run Code Online (Sandbox Code Playgroud)

offset将是从当地时间到UTC的间隔(以分钟为单位).要从UTC日期获取本地时间,您将从日期中减去分钟数.

utc_date.setMinutes(utc_date.getMinutes() - offset);
Run Code Online (Sandbox Code Playgroud)

  • 我认为应该减去偏移量,而不是添加偏移量. (5认同)
  • @OnResolve Surabhi使用`+`是正确的.使用`date.getTimezoneOffset`时,_"getTimezoneOffset()的负返回值表示当前位置在UTC之前,而正值表示该位置在UTC之后."_([**Tech Republic**](http://www.techrepublic.com/article/convert-the-local-time-to-another-time-zone-with-this-javascript/)). (3认同)
  • 至少在chrome中,这是错误的.即使是负时区也会返回正数. (2认同)
  • @Surabhi @WebWanderer解释说明为什么在这里使用`+`是不正确的.从`getTimezoneOffset()`返回的值是您需要**添加到本地时间以获得UTC**的值.因此,如果您想要从UTC到本地时间,则操作需要为`-`.基本上,这个答案与请求相反,从本地时间转换为utc. (2认同)