python获取本地的当前时间,可以使用datetime.now()方法,也可以使用time.time()方法获取当前时间戳,如果想要获取其他地区的当前时间,该怎样处理呢,比如,此时此刻,我想知道印度的时间。
我们所用的北京时区是东8区(UTC/GMT +8.00),而印度是东5区(UTC/GMT +5:30),两者相差了2.5小时,获取到当前时间后,减去2.5小时就能得到印度的当前时间。
看起来也不是很难,但是考虑到我们所写的程序运行在其他地区的机器上,比如运行在美国的机器上,也可能是运行在德国的机器上,那么想要计算出印度的当前时间,就必须先知道程序所在机器的时区。
需要一种方法来获取本地时间的UTC偏移量,这样就能知道本地时间处于哪个时区了,方法如下
import time
print(time.localtime().tm_gmtoff) # 28800
28800 = 8*60*60, 这与我们所处时区为东8区相符,如果这段程序在其他时区运行,将得到其他的偏移量。
使用本地区时间的UTC偏移量减去印度时间的UTC偏移量,就能知道本地时间与印度时间相差的秒数,那么就可以计算出印度的当前时间,我实现了一个函数
import time
from datetime import datetime
def get_india_timestamp():
local_offset = time.localtime().tm_gmtoff # 当前机器utc时间偏移量
india_offset = int(5.5 * 60*60)
offset = local_offset - india_offset
timestamp = int(datetime.now().timestamp())
india_timestamp = timestamp - offset
return india_timestamp
india_timestamp = get_india_timestamp()
print(datetime.fromtimestamp(india_timestamp))
当前时间是北京时间11点13分,计算出的印度时间是2021-10-14 08:42:43, 相差2个半小时。
QQ交流群: 211426309