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

And*_*eKR 6 javascript firefox timezone google-chrome date

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

2012-01-01 01:02:03
2012-07-01 04:05:06
Run Code Online (Sandbox Code Playgroud)

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

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

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

2
6
Run Code Online (Sandbox Code Playgroud)

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

1
4
Run Code Online (Sandbox Code Playgroud)

那么有一个更好的解决方案与Date对象或我坚持分裂字符串?

Bis*_*nna 6

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

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

在我的情况下输入是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();
Run Code Online (Sandbox Code Playgroud)

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

  • 使用替换所有命令`myDate = myDate.replace(/ - /g,'/')替换' - '和'/';` (2认同)