獲取當前時間
1.?用time模塊獲取當前時間
>>> import time
>>> t = time.localtime()
>>> current_time = time.strftime("%Y-%m-%d %H:%M:%S", t)
>>> print(current_time)
'2020-06-13 17:59:12'
或者直接就用下面代碼也能獲取當前時間的字符串
>>> import time
>>> time.strftime("%Y-%m-%d %H:%M:%S")
'2020-06-13 15:45:57'
2.?用datetime模塊獲取當前時間:
>>> from datetime import datetime
>>> dt = datetime.now()
>>> dt.strftime('%Y-%m-%d %H:%M:%S')
'2020-06-13 18:03:09'
格式化時間字符串
1.?用time模塊格式化時間字符串:
>>> import time
>>> time.strftime("%Y-%m-%d %H:%M:%S")
'2020-06-13 15:45:57'
說明:time模塊提供一些日期時間的函數(shù),注意python里面還有一個time對象,這兩者是有區(qū)別的。
2.?用datetime模塊格式化時間字符串:
>>> from datetime import datetime
>>> datetime.now().strftime('%Y-%m-%d %H:%M:%S')
'2020-06-13 17:57:25'
解析時間字符串
1.?用time模塊:
>>> import time
>>> time.strptime("30 Nov 00", "%d %b %y")
time.struct_time(tm_year=2000, tm_mon=11, tm_mday=30, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=335, tm_isdst=-1)
2.?用datetime模塊:
>>> from datetime import datetime
>>> datetime.strptime('2020-06-13 18:03:09', '%Y-%m-%d %H:%M:%S')
datetime.datetime(2020, 6, 13, 18, 3, 9)
時間日期加減
>>> from datetime import datetime, timedelta
>>> nine_hours_from_now = datetime.now() + timedelta(hours=9)
>>> nine_hours_from_now
datetime.datetime(2020, 6, 14, 3, 14, 58, 720758)
說明:datetime模塊的timedelta對象可以用于操縱datetime時間
計算時間的長短
同樣,timedelta對象可以用來計算時間的長短
>>> time1 = datetime(1985, 9, 10, 0, 10)
>>> time2 = datetime(1986, 9, 10, 0, 10)
>>> time1 - time2
datetime.timedelta(-365)
時間對象轉Epoch時間
1.time模塊轉epoch時間
>>> import time
>>> now = int(time.time())
>>> now
1592043522
說明:time.time()方法返回當前epoch時間的float數(shù)據(jù),int()方法將float轉成int
2.datetime模塊轉epoch時間:
>>> from datetime import datetime
>>> datetime(2012,4,1,0,0).timestamp()
1333209600.0
>>> int(datetime(2012,4,1,0,0).timestamp())
1333209600
注:?Epoch時間(也稱為Unix時間,POSIX時間)是用自世界標準時間(UTC)1970-1-1 00:00:00后的秒數(shù)值
關于時區(qū)timezone,UTC等
日期和時間對象可以分為“感知型”和“簡單型”兩類。簡單來說:
“感知型”就是在對象里面包含了時區(qū)信息,對于一個給定的時間,無論在哪個時區(qū)轉換成UTC都是同一個時間
“簡單型”就是在對象里面不包括時區(qū)信息,對于一個時間處于哪個時區(qū),完全是靠開發(fā)者自己來確定。
對于一個datetime對象,檢查它是“感知型”還是“簡單型”最簡單的辦法是檢查它是否有tzinfo對象
>>> from datetime import datetime
>>> print(datetime.now().tzinfo)
None
要使一個datetime對象變成“感知型”可以引入pytz庫。首先,您必須實例化一個timezone對象,然后使用該timezone對象將datetime對象 localize(本地化)。 localize(本地化)只是給出對象的時區(qū)信息。
>>> import datetime
>>> import pytz
>>> now = datetime.datetime.now()
>>> timezone = pytz.timezone('Asia/Shanghai')
>>> now_aware = timezone.localize(now)
>>> now_aware.tzinfo
<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>
>>> now_aware
datetime.datetime(2020, 6, 13, 19, 25, 53, 105241, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)
要獲取pytz支持的所有時區(qū)
>>> pytz.all_timezones
['Africa/Abidjan', ......, 'WET', 'Zulu']
要轉換成其它時區(qū)
>>> timezone2 = pytz.timezone('US/Pacific')
>>> now_aware = timezone2.localize(now)
>>> now_aware
datetime.datetime(2020, 6, 13, 19, 25, 53, 105241, tzinfo=<DstTzInfo 'US/Pacific' PDT-1 day, 17:00:00 DST>)