在Javascript中格式化日期而不转换为本地时区

时间:2012-08-22 15:13:34

标签: javascript firefox google-chrome date timezone

在SQL数据库中,我有来自不同时区的时间列表,但我既不关心也不关心相应的时区信息:

2012-01-01 01:02:03
2012-07-01 04:05:06

对于输出我想用Javascript格式化它们。我试过了:

var text = input.replace(' ','T'); // SQL -> ISO8601
var d = new Date(Date.parse(text));
hours = d.getHours();

问题是在Chrome中,日期被解释为以UTC格式转换为我的本地时区,因此我得到:

2
6

在Firefox中,它被解释为当地时间,我得到了我想要的东西:

1
4

对于 Date 对象是否有更好的解决方案,还是我坚持拆分字符串?

2 个答案:

答案 0 :(得分:6)

我找到的唯一解决方案是将-替换为/

input = "2012-01-01 01:02:03";
var text = input.replace('-', '/');
var d = new Date(Date.parse(text));
hours = d.getHours();

就我而言,输入为2013-05-22T16:45:00Z,因此我也替换了TZ

input = "2013-05-22T16:45:00Z";
var text = input.replace(/[TZ]/, '').replace('-', '/');
var d = new Date(Date.parse(text));
hours = d.getHours();

这样Javascript就可以在不了解时区的情况下处理它并停止巧妙地行动。

答案 1 :(得分:0)

我认为与日期有关,你需要使用一些Date"框架"比如Globalize jQuery pluginDatejs来获取跨浏览器的行为。这样做,您将能够配置要在日期解析中使用的模式。