Python時間変換(タイムスタンプ、フォーマット時間)

2940 ワード

バックグラウンドストーリー
日常の仕事でpythonタイムフォーマット変換の問題によく遭遇します.例えば、タイムスタンプをフォーマット時間に変換したり、フォーマット時間をタイムスタンプに変換したりします.ここでまとめます.
まとめる前に、タイムゾーンのキーを明らかにする必要があります.
  • タイムゾーン:私たちが通常使用しているタイムゾーンは一般的にUTC時間とUTC+8 ( )時間に分けられ、東八CT-中国標準時間は簡単に中国時間と理解され、UTC WET-ヨーロッパ西部タイムゾーン、GMT-グリニッジ標準時間、簡単にイギリス時間と理解されています.東8時間はUTC時間より8時間速い.
  • 世界タイムゾーン図
  • ここに画像の説明を挿入します
    時間をタイムスタンプに変換
    ローカル(東八)タイムスタンプの取得
    
    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)