datetime模組提供了用於操作日期和時間的類、便捷的格式化輸出、有效地提取資訊和進行時間相關的計算。
在時間資料的處理方面, datetime基本可以滿足我的需求了。下面,總結下datetime模組的常用方法。
datetime下定義了三個類用來存放時間資料類格式
datetime.date
表示日期,datetime.date(year, month, day), 屬性分別是年月日
datetime.time
表示時間,datetime.time(hour, minute, second,microsecond), 屬性分別是小時,分鐘,秒,毫秒
datetime.datetime
日期+時間, datetime.datetime(year, month, day,hour, minute, second,microsecond)
這三個類本質上沒有區別,使用哪乙個完全取決於具體業務需要。如果只有日期,使用datetime.date . 如果只有時間,使用datetime.time 。若時間日期都重要,那麼使用datetime.datetime . 這就是時間的資料格式,就像list一樣,可以用來格式化儲存時間資料。
1 輸入時間
上面三種資料格式都是類嘛,當然可以例項化。
national_day = datetime.date(
2020,10
,1) getuptime = datetime.datetime(6,
0,0)
2 讀取時間
資料庫中的資料一般是以標準的資料型別儲存,有一整套成熟的處理方法,詳見sql處理時間資料 。excel表中的資料格式可能參差不齊,各種格式, 比如:
那麼如何將字串中的時間資訊轉換為datetime資料格式呢?
需要注意的是excel本身帶有日期轉換功能, 非常方便,方法是右鍵設定單元格格式,選擇時間或者日期。
datetime提供strptime 函式也可以轉化,str表示string, p表示parse分析的意思,也就是輸入乙個時間字串和分析模式,返回乙個時間物件。 比如:
date1 =
'2023年10月1日'
# 字串
date2 =
'feb 4 2017'
# 字串
date1 = datetime.datetime.strptime(
'2023年10月1日'
,'%y年%m月%d日'
)date2 = datetime.datetime.strptime(
'feb 4 2017'
,'%b %d %y'
)print
(date1,
'\n'
, date2)
2020-10
-0100:
00:002017-02
-0400:
00:00
分析模式就是按照時間的格式化編碼。 datetime的格式化編碼表
3 獲取執行當前語句的系統時間
datetime.datetime.now(
)# 完整時間戳
datetime.datetime(
2020,11
,3,19
,30,8
,736315
) datetime.date.today(
)# 日期
datetime.date(
2020,11
,3)
today = datetime.date.today(
)rightnow.year
2020
rightnow.month
11rightnow.isoweekday()2
rightnow.day
3rightnow.hour
19rightnow.minute
51rightnow.second
20rightnow.microsecond
103255
rightnow.isocalendar(
)# 返回乙個元組 (年,第幾周, 週幾)
(2020,45
,2)rightnow.isoformat(
'/')
# 格式化輸出
'2020-11-03/19:51:54.103255'
rightnow.strftime(
'%y-%m-%d'
)# 格式化輸出
'2020-11-03'
timedelta類表示連個不同時間之間的時間差,可以直接對datetime.date, datetime.time和datetime.datetime物件做算術運算,不同的單位之間做四則運算,差值單位也方便控制,建構函式是 datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0), 所以這個差值的單位可以是天、秒、微秒、毫秒、分鐘、小時、周。
today = datetime.date.today(
) mybrithday = datetime.date(
2020,12
,10) how_long_to_birthday = mybrithday-today
print
(how_long_to_birthday)
>>
>datetime.timedelta(days=-24
)# 時間差為timedelta類
print
(how_long_to_birthday.days)-24
tomorrow = today + datetime.timedelta(
1)
pirnt(tomorrow)
>>
>datetime.date(
2020,11
,4) datetime.datetime.now(
)+ datetime.datedelta(seconds=10)
# 時間差也可以是秒
>>
>datetime.datetime(
2020,11
,3,20
,27,12
,506074
)
本文僅提供datetime的常用方法, 更詳細的介紹參考datetime官方文件
參考:python3 datetime官方文件 :
菜鳥教程-strptime函式 : oob.com/python/att-time-strptime.html
資料分析時間資料處理
from datetime import datetime now datetime.now print now print 年 月 日 format now.year,now.month,now.day diff datetime 2019,4,4,21 datetime 2019,1,25,0 ...
Python 空間資料處理
from geopy.geocoders import nominatim geolocator nominatim location geolocator.geocode 中國人民大學 print location.address 中國人民大學,人民大學北路,稻香園南社群,海淀區,北京市,1008...
時間顆粒度相關資料處理
原始資料為顆粒度1秒資料,下面的方法裡可以自定義時間顆粒度,獲取處理後的資料!arr1 array array time 1523714540,pv 50,exec 20 array time 1523714541,pv 40,exec 10 array time 1523714542,pv 30,...