V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
la2la
V2EX  ›  程序员

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

  •  1
     
  •   la2la · 2018-12-18 14:21:52 +08:00 · 1145 次点击
    这是一个创建于 2168 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前的这个时间格式:

    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 小时就是北京时间;我这样理解对吗?我有点不太确定

    3 条回复    2018-12-18 15:35:41 +08:00
    la2la
        1
    la2la  
    OP
       2018-12-18 14:23:47 +08:00
    函数 多了个 self 参数。。。。,大家不要介意
    Sylv
        2
    Sylv  
       2018-12-18 15:29:16 +08:00 via iPhone
    建议使用 datetime 配合 pytz 库来处理时区转换,不要自己手动计算。
    la2la
        3
    la2la  
    OP
       2018-12-18 15:35:41 +08:00
    @Sylv 好的 但是我之前没有用过 pytz 这个库 我现在看看,谢谢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2706 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 06:40 · PVG 14:40 · LAX 22:40 · JFK 01:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.