Python時間システム

2576 ワード

Pythonのtimeモジュールとdatetimeモジュールは、pythonの時間を4つの表現で表す時間日付ツールを提供しています.
  • datetime obj
  • time obj/tuple
  • posix timestamp
  • timestring

  • datetime
    現在の時刻を取得:
    >>> import datetime
    >>> datetime.datetime.now()
    datetime.datetime(2016, 8, 21, 16, 21, 51, 631199)
    

    datetimeオブジェクトを作成するには:
    >>> d = datetime.datetime(year=2016, month=1, day=1, hour=12, minute=0, second=0)
    >>> d
    datetime.datetime(2016, 1, 1, 12, 0)
    >>> d.year
    2016
    

    datetimeは可変オブジェクトである、時間を変更するには新しいdatetimeオブジェクトを確立する必要がある.
    ただしdatetimeはtimedeltaを減算、比較または減算することができます.
    >>> datetime.datetime.now() - d
    datetime.timedelta(233, 16611, 887646)
    >>> datetime.datetime.now() < d
    False
    >>> datetime.datetime.now() + datetime.timedelta(1)
    datetime.datetime(2016, 8, 22, 16, 38, 30, 306021)
    

    time tupleに変換:
    >>> d.timetuple()
    time.struct_time(tm_year=2016, tm_mon=1, tm_mday=1, tm_hour=12, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=1, tm_isdst=-1)
    

    time tupleからタイムスタンプに変換:
    >>> time.mktime(datetime.datetime.now().timetuple())
    1471777789.0
    

    時間文字列としてフォーマット:
    >>> datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S %f')
    '2016-08-21 16:46:20 634139'
    

    time
    現在の時刻を取得:
    >>> import time
    >>> time.localtime()
    time.struct_time(tm_year=2016, tm_mon=8, tm_mday=21, tm_hour=16, tm_min=48, tm_sec=24, tm_wday=6, tm_yday=234, tm_isdst=0)
    

    datetimeに変換:
    >>> datetime.datetime(*time.localtime()[0:6])
    datetime.datetime(2016, 8, 21, 16, 56, 16)
    

    時間文字列としてフォーマット:
    >>> time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
    '2016-08-21 16:55:01'
    

    タイムスタンプに変換:
    >>> time.mktime(time.localtime())
    1471770256.0
    

    タイムスタンプ
    UNIXタイムスタンプは、1970-1-1 00:00:00:00からの秒数として定義され、現在のタイムスタンプを取得します.
    >>> import time
    >>> time.time()
    1471777412.3293073
    

    datetimeに変換:
    >>> datetime.datetime.fromtimestamp(time.time())
    datetime.datetime(2016, 8, 21, 19, 8, 22, 719951)
    

    timetupleに変換:
    >>> time.localtime(time.time())
    time.struct_time(tm_year=2016, tm_mon=8, tm_mday=21, tm_hour=19, tm_min=13, tm_sec=41, tm_wday=6, tm_yday=234, tm_isdst=0)