如何将Postgresql时间戳转换为Javascript日期?

如何将Postgresql时间戳转换为Javascript日期?,javascript,string,postgresql,date,timezone,Javascript,String,Postgresql,Date,Timezone,我的数据库使用now()::TEXT函数创建一组timestamtz值。在几个API调用中,我收到了这些值,但我很难将它们转换为Javascript日期对象 以下是Postgres返回的Timestamptz字符串示例:2019-09-12 09:52:52.992823+00 问题是,如果我尝试执行新日期(“2019-09-12 09:52:52.992823+00”),那么浏览器中就会出现挑剔的行为。看起来我必须先在字符串后面加上一个“Z”来获得正确的时间(因为时区?) 另外,Firefox

我的数据库使用
now()::TEXT
函数创建一组timestamtz值。在几个API调用中,我收到了这些值,但我很难将它们转换为Javascript日期对象

以下是Postgres返回的Timestamptz字符串示例:
2019-09-12 09:52:52.992823+00

问题是,如果我尝试执行
新日期(“2019-09-12 09:52:52.992823+00”)
,那么浏览器中就会出现挑剔的行为。看起来我必须先在字符串后面加上一个“Z”来获得正确的时间(因为时区?)

另外,Firefox似乎根本没有解析它(但Chrome有)。如果我删除“+00”,它似乎可以工作

因此,我提出了这个“解决方案”,它似乎在两种浏览器上都适用,但在使用它们之前,我必须在所有日期调用它,而且它似乎有点脆弱。这是正确的方法吗

function fixDate(date) {
  return date.replace("+00", "") + "Z";
}

内置解析器支持的格式如中所述,基本上是ISO 8601的一个特定子集和为指定的格式。解析任何其他格式(即,与指定格式之一不完全匹配的任何内容)取决于实现,不应信任

您可以考虑解析字符串并构造符合ECMA-262的新字符串,例如转换为“2019-09125:52.52.989223+00”到“2019-0912T09:52-52.92++00”。

//将2019-09-12 09:52:52.992823+00转换为
//2019-09-12T09:52:52.992+00:00
//假设所有字符串均为+00:00
函数整流格式(s){
设b=s.split(/\D/);
返回b[0]+'-'+b[1]+'-'+b[2]+'T'+
b[3]+':'+b[4]+':'+b[5]+'。'+
b[6].子序列(0,3)+'+00:00';
}
让我们='2019-09-1209:52:52.992823+00';
console.log(新日期(纠错格式))