本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理
以下文章來源于Python之王 ,作者小sen
前言
time和datetime是Python處理日期和時間的標準庫,在我們專案的實際開發當中使用率是非常高的,datetime模塊有四個重要的類,date,time,datetime,以及timedelta類,分別表示的是日期物件、時間物件、日期時間物件和時間差物件,
時間戳
時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數,注意:目前Python中支持的最大的時間戳為32535244799(3001-01-01 15:59:59)
Python的time塊下有很多函式可以轉換常見日期格式,如函式time.time()用于獲取當前時間戳,例如:
import time
time.time() #回傳當前時間的時間戳 2000年時間戳 都是10位
1557212908.1839943
# 獲取毫秒級別的時間戳(爬蟲引數基本用14位時間戳加密)
int(round(time.time() * 1000))
1557212908183
在撰寫代碼時,往往涉及時間、日期、時間戳的相互轉換,
「str型別的日期轉換為時間戳」
import time
# 字符型別的時間
t = '2019-05-07 15:08:28'
# 轉為時間陣列
timeArray = time.strptime(t, "%Y-%m-%d %H:%M:%S")
print(timeArray)
# timeArray可以呼叫tm_year等
print(timeArray.tm_year) # 2019
# 轉為時間戳
timeStamp = int(time.mktime(timeArray))
print(timeStamp) # 1381419600
# 結果如下
time.struct_time(tm_year=2019, tm_mon=5, tm_mday=7, tm_hour=15, tm_min=8, tm_sec=28, tm_wday=1, tm_yday=127, tm_isdst=-1)
2019
1557212908
「字串格式更改」
# "2019-05-07 15:08:28" 改為 "2019/5/7 15:08:28"
# 先轉換為時間陣列
import time
str_time = "2019-05-07 15:08:28"
time_array = time.strptime(str_time, "%Y-%m-%d %H:%M:%S")
other_way_time = time.strftime("%Y/%m/%d %H:%M:%S", time_array)
print(other_way_time) # 2019/05/07 15:08:28
now = datetime.datetime.now()
otherStyleTime = now.strftime("%Y--%m--%d %H:%M:%S")
print(otherStyleTime) # 2019--05--07 15:08:28
「時間戳轉時間日期」
import time
import datetime
# 使用time
timeStamp = 1557212908
timeArray = time.localtime(timeStamp)
otherStyleTime = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)
print(otherStyleTime) # 2019--05--07 15:08:28
# 使用datetime
timeStamp = 1557212908
dateArray = datetime.datetime.fromtimestamp(timeStamp)
otherStyleTime = dateArray.strftime("%Y--%m--%d %H:%M:%S")
print(otherStyleTime) # 2019--05--07 15:08:28
# 使用datetime,指定utc時間,相差8小時
timeStamp = 1557212908
dateArray = datetime.datetime.utcfromtimestamp(timeStamp)
otherStyleTime = dateArray.strftime("%Y--%m--%d %H:%M:%S")
print(otherStyleTime) # 2019--05--07 07:08:28
Datetime
datetime模塊是在time模塊的基礎之上做了封裝,提供了更多更好用的類供我們使用,常用的有date、time、datetime、timedelta、tzinfo,但是為了更靈活的處理時間,最好是將time模塊和datetime模塊中的精髓學習到,
date類
date類:主要用于處理年、月、日,
date類的建構式如下:datetime.date(year, month, day)
示例:
from datetime import date
d = date(1999, 9, 29)
print(d)
print('year:', d.year)
print('month:', d.month)
print('day:', d.day)
具體輸出:
1999-09-29
year: 1999
month: 9
day: 29
time類
time類:主要用于處理小時、分鐘、秒,
time類的建構式如下:datetime.time(hour[,minute[,second[,microsecond[,tzinfo]]]])
示例:
from datetime import time
t = time(22, 45, 59)
print(t)
print('hour:', t.hour)
print('minute:', t.minute)
print('second:', t.second)
print('microsecond:', t.microsecond) #微秒
print('格式化輸出:', t.strftime('%H:%M:%S'))
print('Earliest :', datetime.time.min)
print('Latest :', datetime.time.max)
輸出:
22:45:59
hour: 22
minute: 45
second: 59
microsecond: 0
格式化輸出:22:45:59
Earliest : 00:00:00
Latest : 23:59:59.999999
datetime子類
datetime子類是date物件和time物件的結合體,是datetime的子類,和它的方法很類似,
它的建構式如下:
datetime.datetime(year,month,day[,hour[,minute[,second[,microsecond[,tzinfo]]]]]),
各引數的含義與date、time的建構式中的一樣,要注意引數值的范圍,
「獲取當前日期和時間」
>>> from datetime import datetime
>>> now = datetime.now() # 獲取當前datetime
>>> print(now)
2019-05-07 16:28:07.198690
>>> print(type(now))
<class 'datetime.datetime'>
timedelta類
timedelta類是用來計算二個datetime物件的差值的,可以進行加減乘除運算的,它的實體化方法和datetime物件很類似 此類中包含如下屬性:
- (1) days:天數,
- (2) microseconds:微秒數(>=0并且<1秒),
- (3) seconds:秒數(>=0并且<1天),
兩個date或datetime物件相減就可以回傳一個timedelta物件,
import datetime as dt
date1=dt.date(2020,10,28)
timedel=dt.timedelta(days=4)
print('四天后的日期是:', date1+timedel)
四天后的日期是:2020-11-01
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/197173.html
標籤:其他
