Python3中日期時間的各種用法

獲取當前時間

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>)

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容