Firefox 上的 JavaScript 给出 'Invalid Date'

标签 javascript google-chrome firefox timezone frontend

我没有询问用户他们的首选时区,而是让服务器提供 UTC 时间和一个小的 Javascript,将其转换为浏览器端的本地时间。以下片段在 Chrome 中有效,但在 Firefox 中无效。为什么?

是否有一种通用方法可以在任何合理的浏览器中将 UTC 时间转换为本地时间?

var timestamp_utc="2016-06-16 15:43:40.086670";
                    n = timestamp_utc.indexOf('.');
                    document.write((new Date(Date.parse(timestamp_utc.substring(0, n != -1 ? n : s.length)+" UTC"))).toLocaleString());

最佳答案

是的,放入the specification's date/time format 。在您的情况下,您可以通过将空格更改为 T 并在末尾添加 Z 来实现:

var dt = new Date(timestamp_utc.replace(" ", "T") + "Z");

除非您愿意,否则无需删除小数部分。如果您愿意,并且您确定它就在那里,那么:

var dt = new Date(timestamp_utc.split(".")[0].replace(" ", "T") + "Z");

示例:

var timestamp_utc = "2016-06-16 15:43:40.086670";
console.log(new Date(timestamp_utc.replace(" ", "T") + "Z"));
console.log(new Date(timestamp_utc.split(".")[0].replace(" ", "T") + "Z"));

<小时/>

注意:Date.parse(String)new Date(String) 使用相同的解析算法,因此不需要执行 new Date(日期.parse(x)).

关于Firefox 上的 JavaScript 给出 'Invalid Date',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37863863/

相关文章:

javascript - 在某些浏览器中发出范围请求

javascript - Polymer 中的动态数据绑定(bind)

javascript - 如何将渲染的 Handlebars 模板加载到 div 中?

google-chrome - 无法在 Chrome 中连接到真正的 github.com

html - 第一页加载时 Chrome 上的 Logo 定位不正确

python - 如何在 Python + Selenium 中创建随机用户代理?

jquery - css 中的缩放效果在 firefox 中无法正常工作

google-chrome - 拒绝框架“https ://www. youtube.com/embed/xxxxx,因为它违反了内容安全策略指令”

javascript - 如何创建一个可以在单项和批处理模式之间切换的 Rx (RxJS) 流?

javascript - 如何将 jQuery.serialize() 数据转换为 JSON 对象?