Skip to main content
 首页 » 编程设计

python之如何在python中添加两个偏移量

2025年05月04日8findumars

我从以下行的 pytz 库中获取偏移量:

 offset = datetime.datetime.now(pytz.timezone(timezone)).strftime('%z') 

首先我在 timezone 变量中传递 US/Eastern 然后我在 timezone 变量中传递 Asia/Kolkata 打印以下值

 local_utc = -0400 
 user_utc = +0530 

获取这些值后,我通过以下代码将其从字符串转换为 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 和user_utc 的差异添加到上面的元组中,例如-0400:04 例如小时和00 作为分钟. 例如:差异将是:0930。 09 将被添加到 timezone_tuple.tm_hour 并且 30 将被添加到 timezone_tuple.tm_min

我没有发现任何情况。这怎么可能? 有什么办法可以处理 spilit 方法

请您参考如下方法:

您的帖子展示了如何将 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 

如果您需要将日期时间转换回时间元组,请使用时间元组方法:

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)