在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 对象是否有更好的解决方案,还是我坚持拆分字符串?
答案 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
,因此我也替换了T
和Z
:
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 plugin或Datejs来获取跨浏览器的行为。这样做,您将能够配置要在日期解析中使用的模式。