概述 我从server_x接收到时间戳,我的应用程序位于server_y上,两者都位于不同的区域,我的应用程序调用server_x api并接收具有时间戳记的json,现在我需要执行关于server_y的一些计算,为此,我需要确保从server_x接收到的时间戳可以用于掩盖server_y的本地日期时间,因此两者都是同步的
我想将datetime.now()
转换为我从服务器收到的时区,例如UTC-07:00
当前解决方案,我将server_timestamp
传递给函数,然后将其区域信息传递给datetime.now
Server_timestamp = "2020-04-04T10:24:49.000-0700"
dt = datetime.strptime(Server_timestamp, "%Y-%m-%dT%H:%M:%S.%f%z")
convert_local = datetime.now(dt.tzinfo)
问题:
我需要将服务器的时区保存在db
中,然后使用它而不是每次都传递server_timestamp
来代替,tzinfo
的类型为datetime.timezone = UTC-07:00
,在存储此字符串后如何我用它来更改当地时间。
答案 0 :(得分:1)
这是一个利用datetime
库将datetime
对象从一个时区转换到另一个时区的函数:
from datetime import datetime
import pytz
def convert_tz(dt, current_tz, out_tz):
return dt.replace(tzinfo=current_tz).astimezone(tz=out_tz)
now = datetime.now(tz=pytz.timezone('US/Eastern'))
convert = datetime.now().astimezone().tzinfo
print(now)
print(utc_to_local(now, now.tzinfo, convert))
输出:
2020-05-10 17:02:44.245703-04:00
2020-05-10 16:02:44.245703-05:00
我使用pytz
库进行演示。对于您来说,要获取服务器的时区,请使用行datetime.now().astimezone().tzinfo
。
答案 1 :(得分:0)
我实施了一个解决方案。 现在,我将时间戳的最后5个字符保存在“ -0700”数据库中。
rails console