由於這兩個庫中的一些功能有些重複,因此,首先咱們來比較一下這兩個庫的區別,這能夠幫助咱們在適當的狀況下時候合適的庫。python
在Python文檔裏,time是歸類在Generic Operating System Services中,換句話說,它提供的功能是更加接近於操做系統層面的。通讀文檔可知,time模塊是圍繞着 Unix Timestamp 進行的。函數
time庫主要包括一個類 struct_time,另外其餘幾個函數及相關常量。 須要注意的是在該模塊中的大多數函數是調用了所在平臺C library的同名函數, 因此要特別注意有些函數是平臺相關的,可能會在不一樣的平臺有不一樣的效果。另一點是,因爲是基於Unix Timestamp,因此其所能表述的日期範圍被限定在 1970 - 2038 之間,若是你寫的代碼須要處理在前面所述範圍以外的日期,那可能須要考慮使用datetime模塊更好。spa
因此咱們能夠獲得這樣的結論:通常狀況下咱們會使用datetime庫來處理日期和時間,而須要使用一些只有time庫提供的函數時再單獨引用,例如:sleep函數。操作系統
datetime庫中定義了5個類,分別是code
一、date:表示日期orm
二、dateitme:表示日期和時間對象
三、time:表示時間文檔
四、timedelta:表示時間間隔字符串
五、tzinfo:時區相關信息string
date類能夠用年月日參數進行初始化
day1 = datetime.date(2019, 4, 19)
經常使用方法:
如下方法包括了類方法和對象方法,這二者的區別在於,類方法能夠直接由類調用也能夠由對象調用,而對象方法必須由對象調用,因此一般類方法得到的結果與具體對象無關,而實際使用時也一般以類調用爲主。
一、ctime() 對象方法,返回格式如 Sun Apr 16 00:00:00 2019
>>> day1.ctime() 'Fri Apr 19 00:00:00 2019'
二、fromtimestamp(timestamp) 類方法,根據給定時間戳,返回一個date對象
>>> datetime.date.fromtimestamp(1555683831) datetime.date(2019, 4, 19)
三、today() 類方法,返回一個表明今天日期的date對象
>>> datetime.date.today() datetime.date(2019, 4, 19)
四、isocalendar() 對象方法,返回格式如(年份, 第幾周, 一週中第幾天)的元組
>>> day1.isocalendar() (2019, 16, 5)
上面數據表示day1是2019年第16周的星期5
五、isoformat() 對象方法,返回格式爲YYYY-MM-DD格式的字符串
>>> day1.isoformat() '2019-04-19'
六、isoweekday() 對象方法,返回日期是星期幾,1到7分別表示星期一到星期日
>>> day1.isoweekday() 5
上面數據表示day1(2019年4月19日)是星期5
七、replace(year, month, day) 對象方法,返回一個新date對象,替換指定年、月、日,沒有替換的保持不變
>>> day1 datetime.date(2019, 4, 19) >>> day1.replace(2018) datetime.date(2018, 4, 19) # 這裏年份被替換了 >>> day1 datetime.date(2019, 4, 19) # 對象自己並不會變化 >>> day1.replace(year=2017, day=20) datetime.date(2017, 4, 20) # 這裏指定了替換年和日,月份保持不變
八、strftime(format) 對象方法,根據參數對date對象進行格式化輸出
>>> day1.strftime('%Y-%m-%d') '2019-04-19' # 這個格式與isoformat等價
format參數中試用的日期格式化符號有:
%y 兩位數的年份表示(00-99)
%Y 四位數的年份表示(000-9999)
%m 月份(01-12)
%d 月內中的一天(0-31)
%H 24小時制小時數(0-23)
%I 12小時制小時數(01-12)
%M 分鐘數(00=59)
%S 秒(00-59)
%a 本地簡化星期名稱
%A 本地完整星期名稱
%b 本地簡化的月份名稱
%B 本地完整的月份名稱
%c 本地相應的日期表示和時間表示
%j 年內的一天(001-366)
%p 本地A.M.或P.M.的等價符
%U 一年中的星期數(00-53)星期天爲星期的開始
%w 星期(0-6),星期天爲星期的開始
%W 一年中的星期數(00-53)星期一爲星期的開始
%x 本地相應的日期表示
%X 本地相應的時間表示
%Z 當前時區的名稱
%% %號自己
九、timetuple() 對象方法,返回日期對應的time.struct_time對象
>>> day1.timetuple() time.struct_time(tm_year=2019, tm_mon=4, tm_mday=19, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=109, tm_isdst=-1)
十、weekday() 對象方法,返回日期的星期數,爲0至6,0表示星期一,6表示星期日
>>> day1.weekday() 4 # 這裏4表示的是星期5,這和isoweekday不一樣
time類有5個參數datetime.time(hour(小時), minute(分鐘), second(秒), microsecond(微秒), tzinfo(時區)),在這裏時區暫不討論。
建立對象時,小時是必須的參數,其餘視狀況而定。time類在實際應用中不多用到。
經常使用方法:
一、replace() 對象方法,替換時間參數
二、strftime(format) 對象方法,根據format格式返回時間字符串
三、isoformat() 對象方法,按照hh:mm:dd格式輸出時間
一、ctime() 對象方法,返回格式如 Sun Apr 16 00:00:00 2019
二、now() 類方法,返回一個表示當前系統日期和時間的datetime對象。datetime類也有類方法today(),結果與now()相同。
>>> datetime1= datetime.datetime.now() >>> datetime1 datetime.datetime(2019, 4, 19, 23, 41, 15, 697288)
三、date() 對象方法,返回一個表示datetime對象日期的date對象
>>> datetime1.date() datetime.date(2019, 4, 19)
四、time() 對象方法,返回一個表示datetime對象時間的time對象
>>> datetime1.time() datetime.time(23, 41, 15, 697288)
五、fromtimestamp(timestamp) 類方法,根據指定時間戳返回一個datetime對象
六、replace() 對象方法,返回一個新的datetime對象,替換某個日期和時間參數其他保持不變
七、strftime(format) 對象方法,根據format參數格式化輸出
八、strptime(time_string, format) 類方法,將字符串time_string轉換成datetime對象,字符串的日期格式由format指定
>>> datetime2 = datetime.datetime.strptime('2019-04-19 21:05:35','%Y-%m-%d %H:%M:%S') >>> datetime2 datetime.datetime(2019, 4, 19, 21, 5, 35)
這個類主要用於進行兩個日期的計算,例如:
>>> a = datetime.datetime.now() >>> b = datetime.datetime.now() >>> a datetime.datetime(2019, 4, 19, 23, 56, 32, 487326) >>> b datetime.datetime(2019, 4, 19, 23, 56, 42, 84236) >>> b-a datetime.timedelta(seconds=9, microseconds=596910) >>> (b-a).seconds 9 >>> b = b.replace(year=2018, month=5) >>> b datetime.datetime(2018, 5, 19, 23, 56, 42, 84236) >>> a -b datetime.timedelta(days=334, seconds=86390, microseconds=403090) >>> (a-b).seconds 86390 >>> (a-b).total_seconds() 28943990.40309
給時間加一小時
>>> time1 = datetime.datetime.now() >>> one_hour = datetime.timedelta(hours=1) >>> time1 datetime.datetime(2019, 4, 20, 0, 11, 21, 174662) >>> time1 + one_hour datetime.datetime(2019, 4, 20, 1, 11, 21, 174662)
相似的若是把timedelta參數設置爲你要變更的時間大小,在進行加減運算就能夠了。