1. 程式人生 > >Python:datetime模組使用

Python:datetime模組使用

#!/usr/bin/env python
# coding:UTF-8


"""
@version: python3.x
@author:曹新健
@contact: [email protected]
@software: PyCharm
@file: datetime模組.py
@time: 2018/11/15 15:35
"""

import datetime,time
"""
python中的datetime模組提供了五種核心物件:datetime(時間日期型別), date(日期型別), 
time(時間型別), tzinfo(時區型別), timedelta(時間差型別)
一、datetime.datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])
    1、在例項化datetime物件時,year, month, day是必填項,hour, minute, second, microsecond(微秒),
    tzinfo(時區)是可選項
        程式碼示例:
        birthday = datetime.datetime(year=1987,month=4,day=13)
        print(birthday)
        #列印1987-04-13 00:00:00
    2、datetime.datetime.now():返回當前系統時間
    3、datetime.datetime.now().date():返回當前日期時間的日期部分
    4、datetime.datetime.now().time():返回當前日期時間的時間部分
    5、datetime.datetime.fromtimestamp(timestamp),根據給定的時間戮,返回一個date物件;
    datetime.date.today()作用相同
    6、datetime.datetime.strftime():由日期格式轉化為字串格式
    7、datetime.datetime.strptime():由字串格式轉化為日期格式
    程式碼示例:
    print(datetime.datetime(year=1987,month=4,day=13))
    #1987-04-13 00:00:00
    print(datetime.datetime.now())
    #2018-11-15 16:14:17.069494
    print(datetime.datetime.fromtimestamp(time.time()))
    #2018-11-15 16:14:17.069494
    print(datetime.datetime.now().strftime('%Y-%m-%d %X'))
    #2018-11-15 16:14:17
    print(datetime.datetime.strptime('Apr-20-2018 16:08:08', '%b-%d-%Y %H:%M:%S'))
    #2018-04-20 16:08:08
二、datetime.date(year,month,day),返回year-month-day
    1、date物件和datetime物件的區別在於,date物件只能表示日期,不能表示時間(即其精確度為天)。
    date例項化時須要且僅須要三個引數:year, month, day。date物件是沒有時區(tzinfo)屬性的。
    2、datetime.date.fromtimestamp(timestamp),根據給定的時間戮,返回一個date物件;
    datetime.date.today()作用相同
    3、datetime.date.isocalendar():返回格式如(year,month,day)的元組,(2018, 11, 15)
    4、datetime.date.isoformat():返回格式如YYYY-MM-DD
    5、datetime.date.isoweekday():返回日期的星期
    6、datetime.date.replace(year,month,day):替換給定日期,但不改變原日期
    7、datetime.date.strftime(format):把日期時間按照給定的format進行格式化
    8、datetime.date.timetuple():返回日期對應的time.struct_time物件
    9、datetime.date.weekday():返回給定日期的星期(0-6),星期一=0,星期日=6
    程式碼示例:
    print(datetime.date.fromtimestamp(time.time()))
    #2018-11-15
    print(datetime.date.isocalendar(datetime.datetime.now()))
    #(2018, 46, 4)
    print(datetime.date.isoformat(datetime.datetime.now()))
    #2018-11-15
    print(datetime.date.isoweekday(datetime.datetime.now()))
    #4
    print(datetime.date.replace(datetime.datetime.now().date(),2018,10,15))
    #2018-10-15
    print(datetime.date.strftime(datetime.datetime.now(),"%Y-%m-%d %X"))
    #2018-11-15 16:29:28
    print(datetime.date.timetuple(datetime.datetime.now()))
    #time.struct_time(tm_year=2018, tm_mon=11, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=319, tm_isdst=-1)
    print(datetime.date.weekday(datetime.datetime.now()))
    #3
三、datetime.time(hour,minute,second,microsecond,tzoninfo)
    1、和date物件相反,time物件只能用來表示時間,而不能用來表示日期。time物件所表示的時間可以精確到
    微秒,而且可以具有時區(tzinfo)屬性。
    2、datetime.time.replace()
    3、datetime.time.strftime(format):按照format格式返回時間
    4、datetime.time.tzname():返回時區名字
    5、datetime.time.utcoffset():返回時區的時間偏移量
    示例程式碼:
    print(datetime.time.replace(datetime.time(16,36,1,1),2,4,5))
    #02:04:05.000001
    print(datetime.time.strftime(datetime.time(16,36,1,1),"%X"))
    #16:36:01
    print(datetime.time.tzname(datetime.time(16,36,1,1,datetime.timezone.utc)))
    #UTC
    print(datetime.time.utcoffset(datetime.time(16,36,1,1,datetime.timezone
    (offset=datetime.timedelta(hours=6),name="Asia/Beijing"))))
    #6:00:00
四、datetime.datetime.timedelta用於計算兩個日期之間的差值
    timedelta物件表示一個時間段,timedelta物件可以通過手動例項化得到,也可以通過上述三個物件
    (datetime, date, time)相減得到。
    手動例項化timedelta時,可以傳入的引數有:days, seconds, microseconds, milliseconds, minutes,
    hours, weeks
    程式碼示例:
    now = datetime.datetime.now()
    last = datetime.datetime(year=1987,month=4,day=13,hour=8)
    delta = now - last
    print(delta)
    #11539 days, 8:54:23.708372
    
五、tzinfo物件
    tzinfo物件是用來表示該時區相對UTC時間差值,和該地區是否執行夏時令的物件。datetime模組所提供的
    的tzinfo物件是一個抽象基類,也就是說我們不應該直接例項化此物件, 而應該以此類為基類,定義出子
    類,然後再例項化以供使用。在子類化的時候,需要自定義很多方法,非常繁瑣。還好python提供了一個
    pytz的庫,裡面自帶了適合各個國家和時區的tzinfo物件,我們可以直接使用。

"""