6

在 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对象是否有更好的解决方案,还是我坚持拆分字符串?

4

2 回答 2

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 在不了解时区的情况下处理它并停止聪明地行动。

于 2013-05-21T07:47:15.440 回答
0

我认为与日期有关,您需要使用一些日期“框架”,如Globalize jQuery 插件Datejs来获得跨浏览器行为。这样做,您将能够配置要在日期解析中使用的模式。

于 2012-08-22T15:19:39.757 回答