python-datetime

4179 ワード

Python-内蔵モジュールdatatime
  • timeモジュールtimeモジュールにおける時間表現のフォーマットは主に3種類ある.
  • timestampタイムスタンプ、タイムスタンプは1970年1月1日00:00:00から秒単位で計算するオフセット量
  • を表しています.
  • struct_timeタイムメタグループは、9つの要素グループがあります.
  • format timeフォーマット時間、フォーマットされた構造は時間をより読みやすくします.カスタムフォーマットと固定フォーマットが含まれます.
  • import time
    #1.          ,          
    #              1970 1 1 00:00:00          
    begin_time=time.time()
    print(begin_time)               #1532517163.669289
    #     struct_time to timestamp
    print(time.mktime(time.localtime()))  #1532517163.0
    #2.  struct_time
    print(time.localtime())        #time.struct_time(tm_year=2018, tm_mon=7, tm_mday=25, tm_hour=19, tm_min=9, tm_sec=58, tm_wday=2, tm_yday=206, tm_isdst=0)
    #         struct_time  
    print(time.localtime(time.time())) #time.struct_time(tm_year=2018, tm_mon=7, tm_mday=25, tm_hour=19, tm_min=9, tm_sec=58, tm_wday=2, tm_yday=206, tm_isdst=0)
    #3.  format_time
    #     format_time to struct_time
    print(time.strptime('2011-05-05 16:37:06', '%Y-%m-%d %X'))  #time.struct_time(tm_year=2011, tm_mon=5, tm_mday=5, tm_hour=16, tm_min=37, tm_sec=6, tm_wday=3, tm_yday=125, tm_isdst=-1)
    #     struct_time to format_time
    print(time.strftime("%Y-%m-%d %X",time.localtime()))      #2018-07-25 19:21:36
    
    フォーマットパラメータ:%Y世紀部分の10年制年%m 10進数で表される月%d 10進数で表される月の数%H 24時間制の時間%M 10時制で表される分数%S 10進数の秒数%c標準時間、例えば:04/25/17 14:35:14:14このような形式%Xローカル応答時間
  • datatime datatimeモジュールはtimeモジュールを再カプセル化し、より多くのインタフェースを提供し、提供されるクラスはdate、time、datetime、timedelta、tzinfoである.
  • 現在時刻
  • を取得する.
    date_now=datetime.now()
    frm_date=date_now.strftime('%Y-%m-%d')
    print(frm_date)
    
  • dateクラス
  • from datetime import *
    import time
    #            
    print(date.max,date.min,date.today())   #9999-12-31 0001-01-01 2018-07-25
    #                 
    print(date.fromtimestamp(time.time()))  #2018-07-25
    #         
    d1 = date(2011,6,3)
    #          , , 
    print(d1.year,d1.month,d1.day)
    #                   ,       , ,           。(         )
    tomorrow = d1.replace(day = 27)
    print(tomorrow)
    #                time.struct_time  
    print(d1.timetuple())
    #                 
    timestamp=int(time.mktime(d1.timetuple()))
    print(timestamp)      #1307030400
    #           weekday,      ,  0;     2,  1,    
    d1.weekday()
    d1.isoweekday() #   1
    d1.isocalendar()  #     (year,month,day)   
    #         strftime time    
    
  • timeクラス
  • time.min、time.max:timeクラスが表す最小、最大時間.そのうちtime.min = time(0, 0, 0, 0), time.max = time(23, 59, 59, 999999); time.resolution:時間の最小単位、ここでは1マイクロ秒です.
    t1 = datetime.time(10,23,15)#time  
    t1.hour;t1.minute;t1.second;t1.microsecond# 、 、 、  ;
    t1.tzinfo#    ;
    t1.replace([ hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] )#          ,       、 、 、            (         )
    t1.isoformat()#    "HH:MM:SS"        
    t1.strftime(fmt)# time    format
    
  • datetimeクラスはdateとtimeを結合することに相当し、方法とtime、dateの差は
  • 少ない.
    print(datetime.today(),datetime.now())   #2018-07-25 20:08:20.443733
    print(datetime.fromtimestamp(time.time()))  #      
    print(datetime.combine(date,time))
    
  • timedeltaクラス:時間加減
  • dt = datetime.now()
    #     
    dt1 = dt + timedelta(days=-1)#  
    dt2 = dt - timedelta(days=1)#  
    dt3 = dt + timedelta(days=1)#  
    delta_obj = dt3-dt
    print type(delta_obj),delta_obj# 1 day, 0:00:00
    print delta_obj.days ,delta_obj.total_seconds()#1 86400.0
    
    timedeltaを使用すると、日付でdays、時間hour、分、秒、ミリ秒、微妙な時間計算を簡単に行うことができます.月を計算するには別の方法が必要です.``
  • 時間フォーマットの相互変換
    # 1.     datetime
    string = '2017/11/10 02:29:58'.replace('/','-')
    # string = '2017-11-10 02:29:58'
    time1 = datetime.strptime(string, '%Y-%m-%d %H:%M:%S')
    print(time1)
    print(type(time1))
    
    # 2. datetime string
    time1_str = datetime.strftime(time1, '%Y-%m-%d %H:%M:%S')
    print(type(time1_str))
    print(time1_str)
    
    # 3.         
    
    time2=time.time()  #   
    time2_str = datetime.fromtimestamp(time2)
    
    print(time2_str)
    
    # 4.          
    timeStamp = int(time.mktime(date_now.timetuple()))
    print(timeStamp)
    
    # 5.      
    
    days=(date_now-time1).days
    seconds=(date_now-time1).seconds
    print(seconds)