关于 Python 的时间转换问题,大家看我理解对吗?

2018-12-18 14:21:52 +08:00
 la2la

目前的这个时间格式:

deadline 格式如下:

31-Jan-2019 23:59 (GMT -3.00) 或 24-Dec-2018 02:30 (GMT 0.00) 或 21-Jan-2019 17:00 (GMT 1.00)

pub 格式如下: 17-Dec-2018,

我想把 deadline 转换为北京时间 格式如下,

deadline: 2019-02-01 10:59

pub: 2018-12-17

然后我写了一个函数:

def transition_date(self, deadline, pub):
  
    deadline_data = re.search(r'(\d+-\w+-\d+ \d+:\d+)', deadline).group(1)
  
    gtm1 = re.search(r'\(GMT (-?\d+)\.(\d+)\)', deadline).group(1)
    gtm2 = re.search(r'\(GMT (-?\d+)\.(\d+)\)', deadline).group(2)
    gtm = 8 * 3600 - float(gtm1) * 3600 - float(gtm2) * 60
    
    deadline_data = time.mktime(time.strptime(deadline_data, "%d-%b-%Y %H:%M"))
    deadline_data = deadline_data + gtm
    result_deadline = time.strftime("%Y-%m-%d %H:%M", time.localtime(deadline_data))
  

    pub_date = time.strptime(pub, "%d-%b-%Y")
    pub_date = pub_date
    result_pub = time.strftime("%Y-%m-%d", pub_date)

    return result_deadline, result_pub

我个人的理解就是: 关于 pub 时间转换很容易

关于 deadline 的时间转换是:假如: 北京时间是 GTM 8:00,如果获取的时间是 GTM 1:00 就把时间加上 7 小时就是北京时间,如果获取的时间是 GTM 9:00 就把时间减去 1 小时就是北京时间;我这样理解对吗?我有点不太确定

1082 次点击
所在节点    程序员
3 条回复
la2la
2018-12-18 14:23:47 +08:00
函数 多了个 self 参数。。。。,大家不要介意
Sylv
2018-12-18 15:29:16 +08:00
建议使用 datetime 配合 pytz 库来处理时区转换,不要自己手动计算。
la2la
2018-12-18 15:35:41 +08:00
@Sylv 好的 但是我之前没有用过 pytz 这个库 我现在看看,谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/518611

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX