import datetime
from datetime import timezone, timedelta
from dateutil import parser
rfc3339转datetime(本地时区)
>>> datetime.datetime.fromtimestamp(parser.parse('2021-05-19T10:10:10.000Z').timestamp()).astimezone(timezone(timedelta(hours=8)))
datetime.datetime(2021, 5, 19, 18, 10, 10, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800)))
适用于将rfc3339格式的字符串转为时间,发送给MongoDB中
当前时间datetime添加时区
>>> datetime.datetime.now().astimezone(timezone(timedelta(hours=8)))
datetime.datetime(2021, 5, 19, 22, 15, 37, 616528, tzinfo=datetime.timezone(datetime.timedelta(seconds=28800)))
适用于后端添加当前时间,发送给MongoDB中
datetime(无时区)转str(本地时区)
local_tm = datetime.datetime.fromtimestamp(0)
utc_tm = datetime.datetime.utcfromtimestamp(0)
offset = local_tm - utc_tm
datetime.datetime.fromtimestamp((datetime.datetime(2021, 5, 19, 10, 0, 0)+offset).timestamp()).strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]
'2021-05-19 18:00:00.000'
适用于从MongoDB中获取时间,转换后给前端
datetime(有时区)转rfc3339
import datetime
from datetime import timezone, timedelta
dt = datetime.datetime.now().astimezone(timezone(timedelta(hours=8)))
datetime.datetime.utcfromtimestamp(dt.timestamp()).strftime("%Y-%m-%dT%H:%M:%S.%fZ")
'2022-02-23T09:06:41.793016Z'