将日期字符串转换为Postgres时间戳时区格式

时间:2019-07-10 17:14:59

标签: javascript postgresql momentjs postgresql-9.6

我有以下日期:

25-JAN-18 01.31.02 AM +00:00

,并且正在尝试转换为与Postgres兼容的timestamp with time zone格式。

我正在尝试将以下代码转换为兼容格式:

document.getElementById("parsedDate3").innerHTML = moment("25-JAN-18 01.31.02.923526 AM +00:00 ", "d-MMM-YY hh.mm.ss A Z");

但是我得到的输出是

Mon Jan 01 2018 02:31:02 GMT+0100

有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

您使用的小写字母d是一周中的一天,从0(星期日)到6(星期六)。

请改用大写的D,该字母是每月的一天。

请注意,Moment的格式标记与其他库和语言中的格式标记略有不同,因此请仔细检查文档中的图表。

也:

  • 在您的代码中,秒后还有6位数字。如果您需要考虑这些因素,请使用SSSSSS。否则,它们将被忽略。

  • 您不应直接将Moment对象分配给HTML元素的innerHTML属性。相反,请首先在Moment对象上调用.format()函数以生成字符串。您可以选择向该函数传递参数,以控制输出格式。

答案 1 :(得分:0)

您可以在PostgreSQL中简单地完成它:

class Add():
    def __init__(self, a, b):
        self.a = a
        self.b = b

    #@dask.delayed
    def calc(self):
        return self.a+self.b

a = dask.delayed(1)
b = dask.delayed(2)
add = Add(a, b)
add.calc().compute()

这将适用于PostgreSQL v11或更高版本。

SELECT to_timestamp('25-JAN-18 01.31.02.923526 AM +00:00', 'DD-MON-YY HH.MI.SS.US AM TZH:TZM'); to_timestamp ------------------------------- 2018-01-25 02:31:02.923526+01 (1 row) 的早期版本尚无法解析时区信息。

如果您需要在9.6上运行它,并且知道时区始终为to_timestamp,则可以简单地在格式字符串中省略+00:00