Pythonの時間datetimeモジュール

10847 ワード

Pythonのタイムモジュール
  • Pythonのタイムモジュール
  • datetimeモジュール
  • 1.datetime.dateクラス:
  • 2.datetimeのtimeクラス
  • 3.datetimeのdatetimeクラス
  • 4.Datetimeのtimedeltaクラス

  • strftime()とstrptime()の使用
  • 共通シンボルフォーマット
  • コードインスタンス

  • datetimeモジュール
    datetimeモジュールはdateとtimeモジュールの集合に用いられ、datetimeには2つの定数があり、MAXYEARとMINYEAR、それぞれ9999と1である.
    Datetimeモジュールは5つのクラスを定義し、それぞれ
    1.datetime.date:日付を表すクラス
    2.datetime.Datetime:日付時間を表すクラス
    3.datetime.time:時間を表すクラス
    4.datetime.timedelta:時間間隔、すなわち2つの時点の間隔を表す
    5.datetime.tzinfo:タイムゾーンに関する情報
    1.datetime.dateクラス:
    dateクラスには3つのパラメータがあり、datetime.date(year,month,day)、year-month-dayを返します
    方法:
    1.datetime.date.ctime()は、Sun Apr 16 00:00:00:00などのフォーマットを返します.
    2.datetime.date.fromtimestamp(timestamp)は、与えられた時間に基づいて、dateオブジェクトを返します.datetime.date.today()は同じ役割を果たす
    3.datetime.date.isocalendar():フォーマット(year,month,day)のメタグループを返し、(2017,15,6)
    4.datetime.date.isoformat():YYYY-MM-DDなどのフォーマットを返します.
    5.datetime.date.isoweekday():指定された日付の曜日(1-7)、月曜日=1、日曜日=7を返します.weekday()月曜日=0、日曜日=6
    6.datetime.date.replace(year,month,day):指定した日付を置き換えますが、元の日付は変更しません.
    7.datetime.date.strftime(format):日付時間を所定のformatでフォーマットします.
    8.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)
    9.datetime.date.weekday():日付を返す曜日
    2.datetimeのtimeクラス
    timeクラスには5つのパラメータがあり、datetime.time(hour,minute,second,microsecond,tzoninfo)は、08:29:30に戻ります.
    1.datetime.time.replace()
    2.datetime.time.strftime(format):format形式で時間を返す
    3.datetime.time.tzname():タイムゾーン名を返します
    4.datetime.time.utcoffset():タイムゾーンを返す時間オフセット量
    3.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-26-2018 21:01:35’
    datetime.datetime.strptime():文字列フォーマットから日付フォーマットに変換
    datetime.datetime.strptime(‘Apr-26-2018 21:01:35’, ‘%b-%d-%Y %H:%M:%S’) 2018-04-26 21:01:35
    4.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()

    strftime()とstrptime()の使用
    strftime()関数は、日付、日付時間、時間をフォーマットするための関数であり、date、datetime、timeなどのクラスをサポートし、これらの日付、日付時間または時間をフォーマット文字要求フォーマットにより文字列で表す.逆にstrptime()関数は、文字列が表す日付時間からフォーマット文字列の要求に応じて対応する日付時間に変換されます.
    timeオブジェクトの場合、フォーマット文字列は、timeオブジェクトに対応する値がないため、年、月、日に関連する文字は使用しません.不幸にも使用した場合は、デフォルトで0の値しか出力できません.
    dateオブジェクトの場合、フォーマット文字列は、dateオブジェクトに対応する値がないため、時間、分、秒、およびマイクロ秒に関連する文字を使用しないでください.使用した場合、デフォルト出力は0のみです
    strftime()関数はC言語libライブラリを呼び出して実現されるため、異なるプラットフォームでサポートされており、特定のプラットフォームでサポートされている詳細は、プラットフォーム上でstrftimeドキュメントの説明を表示する必要があります.
    一般的なシンボルフォーマット
    書式文字
    意味

    注意事項
    %a
    曜日の英語の略語
    Sun, Mon, …, Sat(en_US); So, Mo, …, Sa(de_DE)
    %A
    曜日の英語フルネーム
    Sunday, Monday, …, Saturday(en_US)
    %w
    曜日は数字、0は日曜日、6は土曜日
    0,1,…,6
    %d
    0で補充された2桁の日付数
    01,02,…,31
    %b
    月は略語で表示
    Jan, Feb,…, Dec(en_US)
    %B
    月にフルネーム表示
    January, February, …,December(en_US)
    %m
    月に0補充の2桁表示を採用
    01,02,…,12
    %y
    年は0補完の2桁で表示
    00,01,…,99
    %Y
    四桁で表される年
    0001,0002,…,2013,2014,2015,…,9998,9999
    %I
    0で補充された12時間で表示される時間
    00,01,…,12
    %p
    現地時間は午前ですか、午後ですか.
    AM,PM(en_US)
    %M
    0の補足分で表示
    00,01,…,59
    %S
    0補完秒で表示
    00,01,…,59
    %f
    0で補完するマイクロ秒で表す
    000000,000001,…,999999
    %z
    UTCオフセットは+HHMMまたは-HMMとして表される
    (empty),+0000,-0400,+1030
    %Z
    タイムゾーン名
    (empty),UTC,EST,CST
    %j
    0で補充された年の日数
    001,002,…,366
    %U
    一年のうち何週目、日曜日を週として始めます
    00,01,…,53
    %W
    一年で何週目、月曜日が週として始まります
    00,01,…,53
    %c
    ローカルの適切な日付と時間で表示
    Tue Aug 16 21:30:00 1988(en_US)
    %x
    ローカルの適切な日付で表示
    08/16/88(None);08/16/1988(en_US)
    %%
    パーセントを出力
    %
    コードインスタンス
    #!usr/bin/env python  
    #-*- coding:utf-8 _*-  
    """ 
    @author:binbinzhang
    @file: time.py
    @time: 2018/04/26 
    @email:[email protected]
    @function:python        
    """
    
    import datetime
    #       
    d1 = datetime.datetime.now()
    print (d1)
    #          
    d2 = d1 + datetime.timedelta(hours=8)
    print (d2)
    #         
    d3 = d2.strftime('%Y-%m-%d %H:%M:%S')
    print (d3)
    #            
    date = str("30 Apr 18")
    d4 = datetime.datetime.strptime(date,'%d %b %y')
    print (d4)
    '''
    2018-04-26 20:25:06.238218
    2018-04-27 04:25:06.238218
    2018-04-27 04:25:06
    2018-04-30 00:00:00
    '''
    
    def first_day_of_month():
      '''
             
      :return:
      '''
      return datetime.date.today() - datetime.timedelta(days=datetime.datetime.now().day - 1)
    def first_day_of_week():
      '''
             
      :return:
      '''
      return datetime.date.today() - datetime.timedelta(days=datetime.date.today().weekday())
    if __name__ == "__main__":
      this_week = first_day_of_week()
      last_week = this_week - datetime.timedelta(days=7)
      this_month = first_day_of_month()
      last_month = this_month - datetime.timedelta(days=(this_month - datetime.timedelta(days=1)).day)
      print (this_week)
      print (last_week)
      print (this_month)
      print (last_month)
      """
      datetime     
         0001  9999 
      """
      """
          
            datetime  
      now      tz,      。       today     
      """
      now = datetime.datetime.now()
      # UTC  
      datetime.datetime.utcnow()
      attrs = [
          ("year", " "), ('month', " "), ("day", " "), ('hour', "  "), ('minute', " "), ('second', " "),
          ('microsecond', "  "), (
              'min', "  "), ('max', "  "),
      ]
      for k, v in attrs:
          "now.%s = %s #%s" % (k, getattr(now, k), v)
    
      #     time  
      now.timetuple()
    
      #     date  
      now.date()
    
      #     time  
      now.time()
    
      #      。    0,    6,         
      now.weekday()
    
      #      。    1,    7          
      now.isoweekday()
    
      #       。       1 
      now.replace(day=1)
      past = datetime.datetime(2010, 11, 12, 13, 14, 15, 16)
    
      #       
      #     timedelta  
      now - past