在python中,我可以这样获得ISO格式的不同时区的时间:
from kubernetes import client, config
import base64
import sys
config.load_kube_config()
v1 = client.CoreV1Api()
sec = str(v1.read_namespaced_secret("mysql-pass", "default").data)
pas = base64.b64decode(sec.strip().split()[1].translate(None, '}\''))
print(pas)
现在,我需要以相同的格式从postgresql获取时间戳。经过一番研究,我得出的最好结论是:
>>> import datetime
>>> import pytz
>>> datetime.datetime.now(tz=pytz.timezone('America/New_York')).isoformat()
'2019-03-15T04:01:23.919800-04:00'
>>> datetime.datetime.now(tz=pytz.timezone('Asia/Bangkok')).isoformat()
'2019-03-15T15:01:23.919800+07:00'
是否可以在不更改数据库会话时区的情况下执行此操作?像这样:
postgres=# set time zone 'America/New_York';
SET
postgres=# select to_json(now());
to_json
------------------------------------
"2019-03-15T04:32:13.628323-04:00"
正确,但缺少UTC偏移量。
答案 0 :(得分:0)
怎么样?
SELECT current_timestamp AT TIME ZONE 'America/New_York'
|| replace('+' || to_char(current_timestamp AT TIME ZONE 'America/New_York'
- current_timestamp AT TIME ZONE 'UTC',
'HH24:MMFM'),
'+-', '-');
?column?
----------------------------------
2019-03-15 05:43:38.901642-04:00
(1 row)