在Python中将PostgreSQL时间戳转换为JavaScript时间戳

8 投票
2 回答
4382 浏览
提问于 2025-04-17 16:48

我有一个Postgre数据库,其中有一个时间戳的列,同时我在Python中有一个REST服务,它会在数据库中执行查询,并把数据返回给JavaScript前端,用来绘制图表,使用的是flot

现在我遇到的问题是,flot可以自动处理JavaScript的时间戳,但我不知道怎么把Postgre的时间戳转换成JavaScript的时间戳(没错,是时间戳,不是日期,如果你不知道怎么做就别编辑了)。我不确定这样做是否是最佳方法(也许转换可以在JavaScript中完成?)。有没有办法做到这一点?

2 个回答

3

你不能通过JSON发送Python或Javascript的“datetime”对象。JSON只接受一些基本的数据类型,比如字符串、整数和浮点数。

我通常的做法是把它当作文本发送,使用Python的datetime.isoformat()方法,然后在Javascript那边进行解析。

7

在PostgreSQL中,可以使用 date_part 或者 extract 函数来获取一个时间戳。

select date_part('epoch',mydatefield)*1000 from table;

然后你可以直接把这个时间戳发送过去。需要注意的是,epoch 是指从1970年1月1日开始的秒数,而JavaScript需要的是毫秒数,所以要乘以 *1000。如果你需要把它转换成日期,一旦在JavaScript中接收到这个时间戳,可以通过调用 new Date(timestamp_from_pg) 来转换。

值得注意的是,flot可以直接使用时间戳作为数字,不需要实际创建 Date 对象。

撰写回答