python時間処理(timeとdatetimeの紹介)

14400 ワード

pythonの時間に関するものは何種類ありますか?今日はtimeとdatetimeの2つを紹介します
timeモジュールは各種操作時間の関数を提供する
Datetimeモジュールは、次のクラスを定義します.
  • datetime.date:日付を表すクラス.よく使われる属性はyear、month、dayです.
  • datetime.time:時間を表すクラス.よく使われる属性はhour,minute,second,microsecondです.
  • datetime.Datetime:日付時間を表します.
  • datetime.timedelta:時間間隔、すなわち2つの時点間の長さを表します.
  • datetime.tzinfo:タイムゾーンに関する情報.

  • pythonで処理されるイベントのタイプは何種類ありますか?
    *タイムスタンプの方法(19,70.1.1 00:00:00:00に対して秒単位で計算されたオフセット量)は、1382678303.98などのタイムスタンプのみです.
    *同じタイムスタンプのstruct_timeはタイムゾーンによって異なる:time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=13, tm_min=21, tm_sec=33, tm_wday=4, tm_yday=298, tm_isdst=0)
    説明してください.最初の6つは説明する必要はありません.次の4つを説明します.
    tm_wday:(0-6, Monday is 0)
    tm_yday:(day in the year, 1-366)
    tm_isdst:(-1,0 or 1)0:通常1:DSTサマータイムが通常より1時間早い-1:現在のタイムゾーンによる
    *表示形式としてのみ使用できる文字列もあります.例:2013-10-25 13:29:39.543000
     
    実用的な観点からtimeとdatetimeを分離しないために、取得と出力の観点から整理します.
     
    1.時間の取得方法、さまざまなフォーマットの時間の取得方法
    timeモジュール:
    >>> import time
    >>> time.time()#          
    1382679270.196
    >>> time.clock()#
    2.1380998706449576e-06
    >>> time.mktime((2013,11,11,11,11,11,1,1,0))#  mktime         
    1384139471.0

    datetimeモジュール:
    >>> from datetime import *
    >>> date.today()*       
    datetime.date(2013, 10, 25)
    >>> datetime.today()#          
    datetime.datetime(2013, 10, 25, 13, 42, 53, 455000)
    >>> datetime.now()#          
    datetime.datetime(2013, 10, 25, 13, 43, 0, 322000)

     
    2.時間があれば、実際にフォーマット間の処理を設計します.例えば、データベースにはタイムスタンプフォーマットが保存されていますが、現実には文字列でしょう.そのstruct_time、いいでしょう.少ないでしょう.
    timeモジュール:
    タイムスタンプ-->struct_time,文字列
    >>> import time
    >>> a = time.time()#          
    >>> a
    1382680272.862
    >>> time.ctime(a)*            
    'Fri Oct 25 13:51:12 2013'
    >>> time.gmtime(a)#      struct_time
    time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=5, tm_min=51, tm_sec=12, tm_wday=4, tm_yday=298, tm_isdst=0)
    >>> time.localtime()#        struct_time
    time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=13, tm_min=52, tm_sec=1, tm_wday=4, tm_yday=298, tm_isdst=0)
    >>> time.localtime(a)# a   struct_time
    time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=13, tm_min=51, tm_sec=12, tm_wday=4, tm_yday=298, tm_isdst=0)

    struct_time->文字列、タイムスタンプ
    >>> import time
    >>> a = time.localtime()
    >>> a
    time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=13, tm_min=57, tm_sec=18, tm_wday=4, tm_yday=298, tm_isdst=0)
    >>> b = time.asctime(a)#      
    >>> b
    'Fri Oct 25 13:57:18 2013'
    >>> time.mktime(a)#      
    1382680638.0
    >>> time.strftime("%a %b %d %H:%M:%S %Y",a)#      
    'Fri Oct 25 13:57:18 2013'

    文字列-->struct_time,PS:文字列はタイムスタンプに直接変換できません.struct_に移行する必要があります.time
    >>> import time
    >>> a
    time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=14, tm_min=5, tm_sec=28, tm_wday=4, tm_yday=298, tm_isdst=0)
    >>> b = time.asctime(a)
    >>> b
    'Fri Oct 25 14:05:28 2013'
    >>> c = time.strptime(b,'%a %b %d %H:%M:%S %Y')#       9  
    >>> c
    time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=14, tm_min=5, tm_sec=28, tm_wday=4, tm_yday=298, tm_isdst=-1)

    datetimeモジュール:
    いくつかのdatetimeモジュールでよく使われる方法を紹介します.
    datetime.fromtimestamp(time.time())#タイムスタンプを文字列に変換
    from datetime import *
    import time
    
    print 'datetime.max:', datetime.max
    print 'datetime.min:', datetime.min
    print 'datetime.resolution:', datetime.resolution
    print 'today():', datetime.today()
    print 'now():', datetime.now()
    print 'utcnow():', datetime.utcnow()
    print 'fromtimestamp(tmstmp):', datetime.fromtimestamp(time.time())#          
    print 'utcfromtimestamp(tmstmp):', datetime.utcfromtimestamp(time.time())
    
    # ----    ----
    # datetime.max: 9999-12-31 23:59:59.999999
    # datetime.min: 0001-01-01 00:00:00
    # datetime.resolution: 0:00:00.000001
    # today(): 2010-04-07 09:48:16.234000
    # now(): 2010-04-07 09:48:16.234000
    # utcnow(): 2010-04-07 01:48:16.234000  #     +8  ,       8
    # fromtimestamp(tmstmp): 2010-04-07 09:48:16.234000
    # utcfromtimestamp(tmstmp): 2010-04-07 01:48:16.234000

     
    3.ある時間の間隔を設定する必要がある場合、datetimeのdatetimeを使用するなど、特殊な場合を処理する.timedeltaクラス.
    コードを参照:
    #! /usr/bin/python
    # coding=utf-8
    
    from datetime import datetime,timedelta
    
    """
    timedelta    datetime      
    """
    now = datetime.now()
    past = past = datetime(2010,11,12,13,14,15,16)
    
    timespan = now - past
    #        
    past - now
    attrs = [
    ("days"," "),( 'seconds'," "),( 'microseconds',"  ")
    #('min',"  "),( 'max',"  "),
    ]
    for k,v in attrs:
        "timespan.%s = %s #%s" % (k,getattr(timespan, k),v)
    
    """
           
    """
    timespan.total_seconds()
    
    """
         timespan
             
    timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
    """
    timespan = timedelta(days=1)##timespan = timedelta(minutes=30)
    now - timespan #    datetime 
    now + timespan
    
    timespan * 2 #
    timespan / 13
    
    #     
    from calendar import monthrange
    now + timedelta(days=monthrange(start.year,start.month)[1])

     
     
    最後に、フォーマットされた文字列の意味をリストします.
    %a週間の略記.水曜日はWeb%A週間の全書きです.水曜日はWednesday%b月の略記のようです.例えば4月がApr%B月の全書きです.4月がApril%cの場合:日付時刻の文字列が表示されます.(例えば:04/07/10 10:43:39)%d:今月中の日数(今月の何日目)%f:マイクロ秒(範囲[09999999])%H:時間(24時間制、[0,23])%I:時間(12時間制、[0,11])%j:日中の日数[0366](その年の何日目)%m:月([01,12])%M:分([00,59])%p:AMまたはPM%S:秒(範囲[00,61],なぜ[00,59]ではないのかpythonマニュアル~~)%U:週はその年の週数その年の何週目)であり、日曜日は週の初日%w:今日は今週の日数で範囲[0,6]、6は日曜日%W:週はその年の週数(その年の何週目)であり、月曜日を週の初日とする%x:日付文字列(例:04/07/10)%X:時間文字列(例:10:43:39)%y:2つの数字で表される年%Y:4つの数字で表される年%z:utc時間からの間隔(ローカル時間であれば空の文字列を返す)%Z:タイムゾーン名(ローカル時間であれば空の文字列を返す)%
     
     
    例:mysqlのselect当日のデータ:
    today = datetime.datetime.today()
    print today
    yestoday = today - datetime.timedelta(days=1)
    print yestoday
    content1 = db.query("select * from log where time > %s and time < %s",yestoday,today)


    0 24 :

    day = datetime.datetime.now()
    oneday = datetime.timedelta(days=1)
    day = day - oneday
    date_from = datetime.datetime(day.year, day.month, day.day, 00, 00, 00)
    date_to = datetime.datetime(day.year, day.month, day.day, 23, 59, 59)

     
     
     
    転載先:https://www.cnblogs.com/maseng/p/3387845.html