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

Javascript:如何将UTC日期转换为本地日期?,javascript,timezone,frontend,utc,Javascript,Timezone,Frontend,Utc,看起来是一件很简单的事?读了这篇文章就不必了——真是一团糟 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 如何按照当地时间调整上述格式打印日期?您查看过矩量.js吗?它是一个方便的日期对象包装器,使日期对象操作变得容易。特别是,这里提供的local()函数将为您提供所需的内容

看起来是一件很简单的事?读了这篇文章就不必了——真是一团糟

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 

如何按照当地时间调整上述格式打印日期?

您查看过矩量.js吗?它是一个方便的日期对象包装器,使日期对象操作变得容易。特别是,这里提供的local()函数将为您提供所需的内容

您只需从npm安装moment,然后将其包含在顶部的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());

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

在将字符串转换为js中的本地日期之前,您需要在字符串中附加UTC:

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

你提供的那篇文章在页面的中间提到

在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)
如果使用,则可以使用:

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

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

我可以用纯JS吗?你是说模板引擎还是纯JavaScript?如果你指的是模板引擎,我不确定我以前是否从未使用过它。如果您指的是纯JavaScript,那么是的,它是一个JS库,您所要做的就是使用npm安装它,然后包含语句var moment=require(“moment”);在js文件的顶部。对不起,还有一件事。我发现了一个类似的线程,它给出了一个如何使用本地函数的示例。你能在回答中给出一个例子,说明如何使用矩.js来解决OP的问题吗?