Javascript:如何将UTC日期转换为本地日期?
看起来很简单吗?不要读这http://dygraphs.com/date-formats.html - 多么混乱!Javascript:如何将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
如何以上述格式打印日期并调整为当地时间?
你看过Moment.js吗? http://momentjs.com/这是一个方便的日期对象包装器,可以简化日期对象的操作。特别是,提供的local()函数将为您提供您在此需要的内容。
所有你需要做的就是从NPM安装一下,然后在顶部这样它包括在你的js文件:
var moment = require("moment");
然后你time_utc变量更改为本地所有你需要做的是:
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)"
是不是我已经做了? – Castle
您提供的文章在页面中间提到,
使用连字符( - ),而不是斜线(/)适用于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)
如果使用moment.js,你可以使用:
var time_utc = "2016-04-25 20:19:00.306671";
var localDate = moment.utc(time_utc).local();
能我用纯JS做它? – Castle
你的意思是模板引擎还是普通的JavaScript?如果你的意思是模板引擎,我不确定我以前从未使用它。如果你的意思是简单的JavaScript,那么是的,它是一个JS库,你所要做的就是用npm安装它,然后包含语句var moment = require(“moment”);在你的js文件的顶部。 – Cameron637
在此处查看文档:http://momentjs.com/docs/ – Cameron637