javascript - 在不转换为本地时区的情况下在 Javascript 中格式化日期

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

最佳答案

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

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 就可以在不知道时区的情况下处理它并停止智能操作。

关于javascript - 在不转换为本地时区的情况下在 Javascript 中格式化日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12076212/

相关文章:

javascript - 在 Javascript 中读取 Firefox 的 media.navigator.enabled 的值

javascript - 如何检测来自 Firefox 历史记录下拉框的事件

javascript - 如何访问 Firefox 插件上下文菜单中右键单击的元素?

javascript - 有没有办法确认数据是否通过网络浏览器传输到谷歌浏览器中的服务器

javascript - 当 Angular 更改时,元素符号颜色无法在 Chrome 中正确显示

html - 在 Chrome 扩展中使用 localStorage 或 chrome.storage 的安全问题

javascript - React Hooks + Firebase Firestore onSnapshot - 正确使用带有反应钩子(Hook)的 firestore 监听器

javascript - 如何在cordova插件barcodeScanner中将barcodeScanner结果保存到localStorage

javascript - 如何在 JavaScript 中按数组的对象键之一对数组进行分组

javascript - 查找reactjs中所有类型的组件