用python获取其他地区的当前时间

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

加入知识星球, 每天收获更多精彩内容

分享日常研究的python技术和遇到的问题及解决方案