標準ライブラリtime、datetimeの使用

5601 ワード

timeライブラリ
timeライブラリの基本的な紹介
  • timeライブラリPythonでの処理時間の標準ライブラリコンピュータ時間の表現は、システム時間を取得し、出力をフォーマットする機能を提供するシステムレベルの正確なタイミング機能を提供し、プログラム性能分析timeライブラリが構造体に依存し、タイムスタンプと文字列の相互変換を行うための
  • を提供する.
     import time
     
     time.()
    
    
  • timeライブラリには、time()ctime()gmtime()時間フォーマット:strftime()strptime()プログラムタイミング:sleep()perf_counter()

  • 時間取得
  • time()現在のタイムスタンプ、すなわちコンピュータ内部の時間値、浮動小数点数
  • を取得する.
    >>>time.time() 
    1516939876.6022282
    
  • ctime()は、現在の時間を取得し、読みやすいように表す、文字列
  • を返す.
    >>>time.ctime() 
    'Fri Jan 26 12:11:16 2018'
    
  • gmtime()現在時刻を取得し、コンピュータが処理可能な時間フォーマット
  • として表す.
    >>>time.gmtime()
     time.struct_time(tm_year=2018, tm_mon=1, 
     tm_mday=26, tm_hour=4, tm_min=11, tm_sec=16,
     tm_wday=4, tm_yday=26, tm_isdst=0)
    

    時間の書式設定
    時間を合理的な方法でフォーマットする:文字列フォーマットのように、ディスプレイテンプレートディスプレイテンプレートが特定のフォーマット制御子からstrftime()を構成する方法が必要です.
    時間の書式設定
    strftime(tpl,ts)tplは、出力効果tsがコンピュータ内部の時間型変数であることを定義するフォーマットテンプレート文字列である
    >>>t = time.gmtime() 
    >>>>time.strftime("%Y-%m-%d %H:%M:%S",t)z,
     '2018-01-26 12:55:20'
    

    書式設定コントロール
    %Y年0000~9999、例えば:1900%m月01~12、例えば:10%B月名January~December、例えば:April%b月名略称Jan~Dec、例えば:Apr%d日付01~31、例えば:25%A週Monday~Sunday、例えば:Wednesday%a週略称Mon~Sun、例えば:Wed%H時間(24 h制)00~23、例えば:12%h時間(12 h制)01~12、例えば:7%p上/午後AM、PM、例えば:PM%M分00~59、例えば:26%S秒00~59、例えば:26
    プログラムタイミングアプリケーション
  • プログラム計時アプリケーション広範プログラム計時とは、起動停止動作が経過した時間を測定するプロセス測定時間を指す:perf_counter()生成時間:sleep()
  • perf_counter()は、CPUレベルの正確な時間カウント値を返す.単位は秒である.このカウント値の起点が不確定であるため、連続呼び出し差値は
  • の意味を持つ.
    >>>start = time.perf_counter() 318.66599499718114 
    >>>>end = time.perf_counter() 341.3905185375658 
    >>>>end - start 22.724523540384666
    
  • sleep(s)s擬休眠時間、単位は秒、浮動小数点数
  • >>>def wait(): time.sleep(3.3)
    >>>wait() #     3.3     
    

    datetimeライブラリ
    datetimeモジュールはdateとtimeモジュールの集合に用いられ、datetimeには2つの定数があり、MAXYEARとMINYEAR、それぞれ9999と1である.Datetimeモジュールは5つのクラスを定義し、それぞれ
  • datetime.date:日付を表すクラス
  • datetime.Datetime:日時を表すクラス
  • datetime.time:時間を表すクラス
  • datetime.timedelta:時間間隔、すなわち2つの時点の間隔
  • を表す
  • datetime.tzinfo:タイムゾーンに関する情報
  • datetime.date
    dateクラスには3つのパラメータがあり、datetime.date(year,month,day)、year-month-dayメソッドを返します.
  • datetime.date.ctime()、Sun Apr 16 00:00:00:00 2017
  • などのフォーマットを返します.
  • datetime.date.fromtimestamp(timestamp)は、与えられた時間に基づいて、dateオブジェクトを返します.*datetime.date.today()作用は同じ
  • datetime.date.isocalendar():フォーマット(year,month,day)のメタグループを返し、(2017,15,6)
  • datetime.date.isoformat():YYYY-MM-DD
  • のような戻りフォーマット
  • datetime.date.isoweekday():指定された日付の曜日(0-6)、月曜日=0、日曜日=6
  • を返します.
  • datetime.date.replace(year,month,day):指定された日付を置き換えますが、元の日付
  • は変更されません.
  • datetime.date.strftime(format):日付時間を所定のformatでフォーマットします.
  • datetime.date.timetuple():日付に対応するtimeを返す.struct_timeオブジェクトtime.struct_time(tm_year=2017, tm_mon=4, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=105, tm_isdst=-1)
  • datetime.date.weekday():日付を返す週
  • datetime.datetime
    datetimeクラスには多くのパラメータがあり、datetime(year,month,day[,hour[,minute[,second[,microsecond[,tzinfo]]]]])、戻り年月日、時間分秒
  • datetime.datetime.ctime()
  • datetime.datetime.now().date():現在の日時を返す日付部分
  • datetime.datetime.now().time():現在の日時を返す時間部
  • datetime.datetime.fromtimestamp()
  • datetime.datetime.Now():現在のシステム時間
  • を返します.
  • datetime.datetime.replace()
  • datetime.datetime.strftime():日付フォーマットから文字列フォーマット
  • に変換
    datetime.datetime.now().strftime('%b-%d-%Y %H:%M:%S')
      'Apr-16-2017 21:01:35'
    
    
  • datetime.datetime.strptime():文字列フォーマットから日付フォーマット
  • に変換
    datetime.datetime.strptime('Apr-16-2017 21:01:35', '%b-%d-%Y %H:%M:%S')
        2017-04-16 21:01:35
    
    

    datetime.time
    timeクラスには5つのパラメータがあり、datetime.time(hour,minute,second,microsecond,tzoninfo)は、08:29:30を返します.datetime.time.replace() 2.datetime.time.strftime(format):format形式で時間3を返す.datetime.time.tzname():タイムゾーン名を返します.datetime.time.utcoffset():タイムゾーンを返す時間オフセット量
    datetime.timedelta
    datetime.datetime.timedeltaは、2つの日付の差を計算するために使用します.たとえば、次のようにします.
    >>> a=datetime.datetime.now()
    >>> b=datetime.datetime.now()
    >>> a
    datetime.datetime(2017, 4, 16, 21, 21, 20, 871000)
    >>> b
    datetime.datetime(2017, 4, 16, 21, 21, 29, 603000)
    >>> b-a
    datetime.timedelta(0, 8, 732000)
    >>> (b-a).seconds
    8
    #   
    time1 = datetime.datetime(2016, 10, 20)
    time2 = datetime.datetime(2015, 11, 2)
    
    """      """
    print(time1-time2).days
    
    """             """
    print (time1-time2).total_seconds()
     
    

    datetime.tzinfo
    from datetime import datetime, tzinfo,timedelta
    
    """
    tzinfo         
    tzinfo      ,          
    """
    class UTC(tzinfo):
        """UTC"""
        def __init__(self,offset = 0):
            self._offset = offset
    
        def utcoffset(self, dt):
            return timedelta(hours=self._offset)
    
        def tzname(self, dt):
            return "UTC +%s" % self._offset
    
        def dst(self, dt):
            return timedelta(hours=self._offset)
    
    #    
    beijing = datetime(2011,11,11,0,0,0,tzinfo = UTC(8))
    #    
    bangkok = datetime(2011,11,11,0,0,0,tzinfo = UTC(7))
    
    #          
    beijing.astimezone(UTC(7))
    #               
    timespan = beijing - bangkok