美文网首页
Python 时间转换(时间戳、格式化时间)

Python 时间转换(时间戳、格式化时间)

作者: 流浮生 | 来源:发表于2020-12-16 20:27 被阅读0次

    背景故事

    在日常工作中经常会遇到 python 时间格式转换问题,如时间戳转换为格式化时间、格式化时间转换为时间戳,这里做个总结。

    在总结之前我们需要先弄清楚一个关键🔑点:时区

    • 时区:我们通常使用的时区一般分为 UTC时间和 UTC+8 (东八)时间,东八 CT — 中国标准时间 简单理解为中国时间,UTC WET — 欧洲西部时区,GMT - 格林威治标准时间,简单理解为英国时间。东八时间比 UTC 时间快八小时。

    • 世界时区图

    在这里插入图片描述

    格式化时间转化为时间戳

    获取本地(东八)时间戳

    
    import time
    
    import pytz
    
    import datetime
    
    # 返回 东八 时间戳
    
    def get_shanghai_timestamp(date_time):
    
            time_zone = pytz.timezone('Asia/Shanghai')
    
            timeArray = datetime.datetime.strptime(date_time, "%Y-%m-%d %H:%M:%S")
    
            local_dt = timeArray.astimezone(time_zone)
    
            print('>>>', int(time.mktime(local_dt.timetuple())))
    
    get_timestamp('2018-07-13 16:00:00')
    
    

    获取 UTC 时间戳

    
    import time
    
    import pytz
    
    import datetime
    
    # 返回 utc 时间戳
    
    def get_utc_timestamp(utc_time_str, utc_format=r'%Y-%m-%d %H:%M:%S'):
    
        local_tz = pytz.timezone('UTC')      # 定义本地时区(东八时间比 utc 时间快8小时)
    
        utc_dt = datetime.datetime.strptime(utc_time_str, utc_format)      #将世界时间的格式转化为datetime.datetime格式
    
        local_dt = utc_dt.astimezone(local_tz)    #想将datetime格式添加上世界时区,然后astimezone切换时区:世界时区==>本地时区
    
        return int(time.mktime(local_dt.timetuple()))                      #返回当地时间戳
    
    print(get_utc_timestamp('2018-07-13 16:00:00', utc_format='%Y-%m-%d %H:%M:%S'))
    
    

    时间戳转换为格式化时间

    返回东八格式化时间

    
    # 方式一:
    
    import time
    
    import pytz
    
    import datetime
    
    def get_local_format_time(timestamp):
    
      local_time=time.localtime()
    
      format_time=time.strftime("%Y-%m-%d %H:%M:%S", local_time)
    
      return format_time
    
    get_local_format_time(1529112900)
    
    # 方式二:
    
    def local_to_utc(local_ts, time_format=r'%Y-%m-%d %H:%M:%S'):
    
    time_zone = pytz.timezone('Asia/Shanghai')
    
        time_str = time.strftime(time_format, time.localtime(local_ts))    #首先将本地时间戳转化为时间元组,用strftime格式化成字符串
    
        dt = datetime.datetime.strptime(time_str, time_format)            #将字符串用strptime 转为为datetime中 datetime格式
    
        utc_dt = dt.astimezone(time_zone)                                    # astimezone切换为 utc 时区
    
        return utc_dt.strftime(time_format)                                  #返回 utc 格式化时间
    
    get_local_format_time(1529112900)
    
    

    返回 UTC 格式化时间

    
    def get_utc_format_time(local_ts, time_format=r'%Y-%m-%d %H:%M:%S'):
    
        time_str = time.strftime(time_format, time.localtime(local_ts))    #首先将本地时间戳转化为时间元组,用strftime格式化成字符串
    
        dt = datetime.datetime.strptime(time_str, time_format)            #将字符串用strptime 转为为datetime中 datetime格式
    
        utc_dt = dt.astimezone(pytz.utc)                                    # astimezone切换为 utc 时区
    
        return utc_dt.strftime(time_format)                                  #返回 utc 格式化时间
    
    get_utc_format_time(1529112900)
    
    

    相关文章

      网友评论

          本文标题:Python 时间转换(时间戳、格式化时间)

          本文链接:https://www.haomeiwen.com/subject/gypogktx.html