我的数据库使用`now()::TEXT`函数创建了一堆`timestamptz`值。在多个 API 调用中,我会接收到这些值,但我很难将它们转换成 JavaScript 的日期对象。
以下是一个 PostgreSQL 返回的 `timestamptz` 字符串示例:`2019-09-12 09:52:52.992823+00`。
问题在于,如果我试图执行 `new Date("2019-09-12 09:52:52.992823+00")`,那么浏览器会有一些棘手的行为。看起来我必须先在字符串前面加上一个 "Z" 才能得到正确的时间(因为时区?)
此外,Firefox似乎根本不解析它(但Chrome可以)。如果我删除 "+00",它似乎也能工作。
所以我想出了这种“解决方案”,它似乎在两个浏览器上都能工作,但在使用日期之前必须对所有日期调用它,而且它似乎有点脆弱。这是正确的方式吗?
以下是一个 PostgreSQL 返回的 `timestamptz` 字符串示例:`2019-09-12 09:52:52.992823+00`。
问题在于,如果我试图执行 `new Date("2019-09-12 09:52:52.992823+00")`,那么浏览器会有一些棘手的行为。看起来我必须先在字符串前面加上一个 "Z" 才能得到正确的时间(因为时区?)
此外,Firefox似乎根本不解析它(但Chrome可以)。如果我删除 "+00",它似乎也能工作。
所以我想出了这种“解决方案”,它似乎在两个浏览器上都能工作,但在使用日期之前必须对所有日期调用它,而且它似乎有点脆弱。这是正确的方式吗?
function fixDate(date) {
return date.replace("+00", "") + "Z";
}