Python中的日期時間處理詳解
Python中關(guān)于時間、日期的處理庫有三個:time、datetime和Calendar,其中datetime又有datetime.date、datetime.time、datetime.datetime三個類。而時間又可以分為時間戳、本地時間和UTC時間(世界標(biāo)準(zhǔn)時間)。是不是聽起來有點亂?那么他們相互之間有什么區(qū)別?有什么聯(lián)系?又如何轉(zhuǎn)換呢?
time模塊
在time模塊中,時間有三種表現(xiàn)形式:
時間戳,一般指Unix時間戳,是從1970年開始到現(xiàn)在的秒數(shù)。
本地時間的struct_time形式:一個長度為11的命名元組,第一位為年,第二位為月....
UTC時間的struct_time形式:一個長度為11的命名元組,類似于上個,只不過為UTC時間
其中后兩者的類型一致,區(qū)別在于一個是本地時間(localtime),一個是utc時間。
各種時間形式的獲取方式:
print("time stamp:", time.time()) # 時間戳:1479193181.829338
print("local time:", time.localtime()) # struct_time類型的本地時間
time.struct_time(tm_year=2016, tm_mon=11, tm_mday=15, tm_hour=14, tm_min=59, tm_sec=41, tm_wday=1, tm_yday=320, tm_isdst=0)
print("utc time:", time.gmtime()) # struct_time類型的utc時間
time.struct_time(tm_year=2016, tm_mon=11, tm_mday=15, tm_hour=6, tm_min=59, tm_sec=41, tm_wday=1, tm_yday=320, tm_isdst=0)
這里可以看出,本地時間(北京時間)和UTC時間相差8個小時。
各種時間形式的轉(zhuǎn)換:
time_stamp = time.time() # 時間戳 local_time = time.localtime(time_stamp)# 時間戳轉(zhuǎn)struct_time類型的本地時間 utc_time = time.gmtime(time_stamp) # 時間戳轉(zhuǎn)struct_time類型的utc時間 time_stamp_1 = time.mktime(local_time) # struct_time類型的本地時間轉(zhuǎn)時間戳 time_stamp_2 = calendar.timegm(utc_time)# struct_time類型的utc時間轉(zhuǎn)時間戳 print(time_stamp, time_stamp_1, time_stamp_2)
各種時間形式和字符串之間的轉(zhuǎn)換:
print(time.ctime(time_stamp)) # 時間戳轉(zhuǎn)字符串(本地時間字符串)
print(time.asctime(local_time)) # struct_time類型的本地時間轉(zhuǎn)字符串
print(time.asctime(utc_time)) # struct_time類型的utc時間轉(zhuǎn)字符串
# struct_time類型的本地時間轉(zhuǎn)字符串:自定義格式
print(time.strftime("%Y-%m-%d, %H:%M:%S, %w", local_time))
# struct_time類型的utc時間轉(zhuǎn)字符串:自定義格式
print(time.strftime("%Y-%m-%d, %H:%M:%S, %w", utc_time))
struct_time = time.strptime("2016-11-15, 15:32:12, 2", "%Y-%m-%d, %H:%M:%S, %w") # 字符串轉(zhuǎn)struct_time類型

datetime模塊
接下來再看datetime模塊。該模塊中包含4個主要的類:
datetime.time:時間類,只包含時、分、秒、微秒等時間信息。
datetime.date:日期類,只包含年、月、日、星期等日期信息。
datetime.datetime:日期時間類,包含以上兩者的全部信息。
datetime.timedelta:時間日期差值類,用來表示兩個datetime之間的差值。
關(guān)于各個類的基本用法比較簡單,建議看官方文檔:datetime module
這里主要說一下datetime.datetime類的用法,其他兩個的用法類似,只有輕微差別:
a_datetime_local = datetime.datetime.now() # 獲取datetime.datetime類型的本地時間
a_datetime_utc = datetime.datetime.utcnow() # 獲取datetime.datetime類型的utc時間
# datetime.datetime類型轉(zhuǎn)字符串
print(a_datetime_local.strftime("%Y-%m-%d, %H:%M:%S, %w"))
# datetime.datetime類型轉(zhuǎn)字符串
print(a_datetime_utc.strftime("%Y-%m-%d, %H:%M:%S, %w"))
a_datetime = datetime.datetime.strptime("2016-11-15, 15:32:12, 2", "%Y-%m-%d, %H:%M:%S, %w") # 字符串轉(zhuǎn)
datetime.datetime格式
datetime類型和時間戳、struct_time類型的相互轉(zhuǎn)換
datetime.datetime和時間戳、struct_time之間,也能夠相互轉(zhuǎn)換:
time_stamp = a_datetime_local.timestamp() # datetime類型轉(zhuǎn)時間戳 print(time_stamp) a_datetime_local = datetime.datetime.fromtimestamp(time.time()) # 時間戳轉(zhuǎn)datetime.datetime類型的本地時間 a_datetime_utc = datetime.datetime.utcfromtimestamp(time.time()) # 時間戳轉(zhuǎn)datetime.datetime類型的utc時間 print(a_datetime_local, a_datetime_utc) print(a_datetime_local.timetuple()) # datetime類型轉(zhuǎn)struct_time類型 print(a_datetime_utc.utctimetuple()) # datetime類型轉(zhuǎn)struct_time類型

本文主要講了各種時間、日期類型的基本用法,以及他們之間相互轉(zhuǎn)換的方法,以及他們和字符串之間相互轉(zhuǎn)換的方法。
老規(guī)矩,文中代碼已上傳至github:https://github.com/xianhu/LearnPython
本站備份下載地址:http://xz.jb51.net:81/201611/yuanma/LearnPython(jb51.net).zip
相關(guān)文章
使用python構(gòu)建WebSocket客戶端的教程詳解
WebSocket是一種在客戶端和服務(wù)器之間實現(xiàn)雙向通信的協(xié)議,常用于實時聊天、實時數(shù)據(jù)更新等場景,Python提供了許多庫來實現(xiàn) WebSocket客戶端,本教程將介紹如何使用Python構(gòu)建WebSocket客戶端,文中通過代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
python的描述符(descriptor)、裝飾器(property)造成的一個無限遞歸問題分享
這篇文章主要介紹了python的描述符(descriptor)、裝飾器(property)造成的一個無限遞歸問題分享,一個不太會遇到的問題,需要的朋友可以參考下2014-07-07
關(guān)于Tensorflow中的tf.train.batch函數(shù)的使用
本篇文章主要介紹了關(guān)于Tensorflow中的tf.train.batch函數(shù)的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04
Python基于Tkinter實現(xiàn)的垃圾分類答題軟件代碼
這篇文章主要介紹了基于Tkinter實現(xiàn)的垃圾分類答題軟件代碼,圖形用戶界面是一種人與計算機通信的界面顯示格式,允許用戶使用鼠標(biāo)等輸入設(shè)備操縱屏幕上的圖標(biāo)或菜單選項,需要的朋友可以參考下2023-04-04
Django中Migrate和Makemigrations實操詳解
這篇文章主要為大家介紹了Django中Migrate和Makemigrations實操詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09
Python如何將jpg圖像修改大小并轉(zhuǎn)換為png
這篇文章主要介紹了Python如何將jpg圖像修改大小并轉(zhuǎn)換為png問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09

