Javascript:如何将UTC日期转换为本地日期?

时间:2016-04-25 20:52:22

标签: javascript timezone frontend utc

看起来很简单吗?没有读过这个http://dygraphs.com/date-formats.html - 真是一团糟!

var time_utc="2016-04-25 20:19:00.306671";
document.write("Local date:"+new Date(time_utc+" UTC")); // Firefox 44.0.2: Invalid Date 

如何以上述格式打印调整为当地时间的日期?

4 个答案:

答案 0 :(得分:0)

你看过Moment.js吗? http://momentjs.com/它是一个方便的日期对象包装器,可以轻松地进行日期对象操作。特别是,提供的local()函数将为您提供所需的内容。

您只需从npm安装片刻,然后将其包含在顶部的js文件中,如下所示:

var moment = require("moment");

然后将time_utc变量更改为local,您只需:

var time_utc="2016-04-25 20:19:00.307";
document.write("Local date:"+moment(time_utc).local());

正如有人之前建议的那样,将整个库包含在一个简单的一次性函数中是不明智的。作为免责声明,我的工作要求我在整个大型项目中进行许多日期时间计算和转换,因此在我的案例中包括一个易于使用的库是首选。但是,如果你只需要一次使用它,我的回答可能不是最好的。

答案 1 :(得分:0)

您需要将UTC附加到字符串,然后再将其转换为js中的本地日期:

var date = new Date('25/04/2016 4:52:48 PM UTC');
date.toString() // "Mon Apr 25 2016 09:52:48 GMT-0700 (PDT)"

答案 2 :(得分:0)

您提供的文章在页面中间提到了

  

使用连字符( - )而不是斜杠(/)可以在WebKit浏览器中使用,但是   不在IE或FF中。注意YYYY-MM-DD的UTC解析!

以及

  

不要尝试指定毫秒。只有最新版本的Chrome才能使用   了解你。

使用日期2016-04-25 20:19:00.306671,您可以使用连字符和毫秒。您可以稍微修改一下time_utc字符串,使其兼容,

var time_utc = "2016-04-25 20:19:00.306671";
time_utc = time_utc.replace(/-/g, "/"); 
time_utc = time_utc.split(".").shift();

var d = new Date(time_utc);
d.toString();

以上代码输出,

Mon Apr 25 2016 20:19:00 GMT+0200 (CEST)

答案 3 :(得分:0)

如果您使用moment.js,则可以使用:

var time_utc = "2016-04-25 20:19:00.306671";

var localDate = moment.utc(time_utc).local();