Firefox上的Javascript提供“无效日期”

时间:2016-06-16 15:49:33

标签: 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());

1 个答案:

答案 0 :(得分:1)

是的,请将其放入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(Date.parse(x))