我从以下行获得了一个偏移形式的pytz库:
offset = datetime.datetime.now(pytz.timezone(timezone)).strftime('%z')
首先,我传递US/Eastern
变量中的timezone
然后我传递Asia/Kolkata
timezone
变量,该变量打印以下值
local_utc = -0400
user_utc = +0530
获取这些值后,我通过以下代码将其从string转换为int:
local_utc = int(local_utc)
user_urc = int(user_utc)
除此之外我还有一个时间段:
hour, minute,days = (timezone_tuple.tm_hour, timezone_tuple.tm_min,
timezone_tuple.tm_mday)
我想将local_utc and user_utc
的差异添加到上面的元组,例如-0400:04
,例如小时和00
作为分钟。
例如:差异将是:0930
。并09
将添加到timezone_tuple.tm_hour
,30
将添加到timezone_tuple.tm_min
我没有发现任何情况。怎么可能呢?
有没有办法处理spilit
方法
答案 0 :(得分:1)
您的帖子显示了如何查找local_utc
和user_utc
整数。您可以使用差值local_utc-user_utc
来确定相对偏移量。
但是,datetime
,time
和pytz
应该为您提供操作时间所需的所有工具,而无需解析偏移并“手动”执行此类计算。
例如,
import pytz
import datetime as dt
import time
eastern = pytz.timezone('US/Eastern')
kolkata = pytz.timezone('Asia/Kolkata')
naive_timetuple = time.localtime(0)
print(naive_timetuple)
# time.struct_time(tm_year=1969, tm_mon=12, tm_mday=31, tm_hour=19, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=365, tm_isdst=0)
上面,我定义了一个天真的时间元组。下面,我将其“本地化”到美国/东部时间 - 也就是说,使其成为时区感知的日期时间:
naive_datetime = dt.datetime(*naive_timetuple[:6])
print(naive_datetime)
# 1969-12-31 19:00:00
localized_datetime = eastern.localize(naive_datetime)
print(localized_datetime)
# 1969-12-31 19:00:00-05:00
现在要将时区感知日期时间转换为任何其他时区,请使用astimezone
方法:
kolkata_datetime = localized_datetime.astimezone(kolkata)
print(kolkata_datetime)
# 1970-01-01 05:30:00+05:30
如果您需要将datetime转换回timetuple,请使用timetuple方法:
kolkata_timetuple = kolkata_datetime.timetuple()
print(kolkata_timetuple)
# time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=5, tm_min=30, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)