學(xué)習(xí): 日期和時間

轉(zhuǎn)自:http://www.byhy.net/tut/py/extra/date_time/
Python中,對日期和時間的操作,主要使用這3個內(nèi)置模塊: datetime 坝茎、 time 和 calendar

獲取當(dāng)前時間對應(yīng)的數(shù)字

開發(fā)程序時拱烁,經(jīng)常需要獲取兩個代碼位置在執(zhí)行時的時間差,比如崩哩,我們想知道某個函數(shù)執(zhí)行大概耗費了多少時間巡球,就可以使用time.time()來做。

import time

before = time.time()
func1()
after = time.time()

print(f"調(diào)用func1邓嘹,花費時間{after-before}")

time.time() 會返回 從 1970年1月1日0點(所謂的epoch時間點) 到 當(dāng)前時間的 經(jīng)過的秒數(shù) 酣栈,可以簡稱為秒數(shù)時間。 關(guān)于該函數(shù)的詳細(xì)解釋汹押,請點擊這里參考官方文檔

指定格式字符串顯示時間

點擊這里矿筝,邊看視頻講解,邊學(xué)習(xí)以下內(nèi)容

以指定格式字符串顯示時間棚贾,是非常常用的窖维,比如日志里面的時間戳。

要得到 當(dāng)前時間 對應(yīng)的字符串妙痹,可以這樣實現(xiàn):

from datetime import datetime
str(datetime.now())

得到類似這樣的字符串:‘2018-06-30 23:10:08.911420’

如果要指定輸出的時間格式铸史,可以像下面這樣

datetime.now().strftime('%Y-%m-%d ** %H:%M:%S')

得到類似這樣的字符串: ‘2019-02-24 ** 16:56:55’

當(dāng)然,也可以使用time庫來格式化顯示字符串

time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()) 

數(shù)字表示的時間轉(zhuǎn)化為字符串表示

如果要將某個指定秒數(shù)時間(從epoch時間點開始計算)怯伊,而不是當(dāng)前時間琳轿,轉(zhuǎn)化為字符串格式,可以這樣寫

time.strftime('%Y%m%d %H:%M:%S',time.localtime(1434502529)) 

字符串時間轉(zhuǎn)化為整數(shù)時間

反過來,如果要將字符串指定的時間利赋,轉(zhuǎn)化為秒數(shù)時間水评,可以這樣

int(time.mktime(time.strptime('2015-08-01 23:59:59', '%Y-%m-%d %H:%M:%S')))

ISO格式 轉(zhuǎn)化為 本地時間

有的時候,我們的程序獲取的時間是 ISO 8601 格式的字符串媚送。

比如:

2008-09-03T20:56:35.450686+00:00

2008-09-03T20:56:35.450686Z

可以通過如下方法轉(zhuǎn)化為 本地格式

from datetime import  timezone
import dateutil.parser

# 字符串時間 轉(zhuǎn)化為 datetime 對象
dt = dateutil.parser.isoparse('2008-09-03T20:56:35.450686+00:00')

# 根據(jù)時區(qū) 轉(zhuǎn)化為 datetime 數(shù)據(jù)
localdt = dt.replace(tzinfo=timezone.utc).astimezone(tz=None)
# 產(chǎn)生本地格式 字符串
localdt.strftime('%Y-%m-%d %H:%M:%S')

獲取某個時間 對應(yīng) 的年月日時分秒數(shù)字

要獲取 當(dāng)前時間 的 年中燥、月、日塘偎、時疗涉、分、秒吟秩、星期幾 對應(yīng)的數(shù)字咱扣,可以使用datetime庫

>>> from datetime import datetime
>>> datetime.now()
datetime.datetime(2018, 6, 30, 23, 3, 54, 238947)

# 年
>>> datetime.now().year
2018

# 月
>>> datetime.now().month
6

# 日
>>> datetime.now().day
30

# 時
>>> datetime.now().hour
23

# 分
>>> datetime.now().minute
7

# 秒
>>> datetime.now().second
58

# 毫秒
>>> datetime.now().microsecond
151169

# 獲取星期幾用 weekday方法
# 0 代表星期一,1 代表星期二 依次類推
>>> datetime.now().weekday() 
5

獲得指定時間字符串對應(yīng)星期幾

如果要獲取的是 某個指定時間涵防,比如 “2018-6-24”闹伪,而不是當(dāng)前時間,對應(yīng)的星期幾壮池,怎么辦偏瓤?

可以使用 datetime類的 strptime方法,先產(chǎn)生對應(yīng)的 datetime對象

# 要計算出 2018年6月24日 是星期幾 
thatDay = "2018-6-24"
from datetime import datetime
# 先把字符串表示的日期轉(zhuǎn)化為 datetime 對象
theDay = datetime.strptime(thatDay, "%Y-%m-%d")
#再獲取星期幾
theDay.weekday()  

從某個時間點往前或者后推 一段時間

如果我們想知道椰憋,2018年6月24日 往后推120天厅克,是什么日期?星期幾橙依?

往前推120天证舟,又是什么日期?星期幾窗骑?

可以這樣計算

thatDay = "2018-6-24"
from datetime import datetime,timedelta
theDay = datetime.strptime(thatDay, "%Y-%m-%d").date()

# 后推120天 就是 + timedelta(days=120)
target = theDay + timedelta(days=120)

print(target)
print(target.weekday())

# 前推120天 就是 - timedelta(days=120)
target = theDay - timedelta(days=120)

print(target)
print(target.weekday())

獲得指定日期那周的周一

thatDay = "2018-6-30"
from datetime import datetime,timedelta
theDay = datetime.strptime(thatDay, "%Y-%m-%d").date()

# 這就是 2018-6-30 那一周的周一
weekMonday = theDay - timedelta(days=theDay.weekday())

獲取某個月總共有多少天

最方便的方法是使用 calendar 模塊里面的 函數(shù)

from calendar import monthrange
# monthrange返回的是元組
# 第一個元素是指定月第一天是星期幾
# 第二個元素是指定月有多少天
mr = monthrange(2011, 2)

# 得到2011年2月有多少天
print(mr[1])
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末女责,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子慧域,更是在濱河造成了極大的恐慌鲤竹,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昔榴,死亡現(xiàn)場離奇詭異辛藻,居然都是意外死亡,警方通過查閱死者的電腦和手機互订,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門吱肌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人仰禽,你說我怎么就攤上這事氮墨》那” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵规揪,是天一觀的道長桥氏。 經(jīng)常有香客問我,道長猛铅,這世上最難降的妖魔是什么字支? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮奸忽,結(jié)果婚禮上堕伪,老公的妹妹穿的比我還像新娘。我一直安慰自己栗菜,他們只是感情好欠雌,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著疙筹,像睡著了一般富俄。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上腌歉,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天蛙酪,我揣著相機與錄音,去河邊找鬼翘盖。 笑死,一個胖子當(dāng)著我的面吹牛凹蜂,可吹牛的內(nèi)容都是我干的馍驯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼玛痊,長吁一口氣:“原來是場噩夢啊……” “哼汰瘫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起擂煞,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤混弥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后对省,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蝗拿,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年蒿涎,在試婚紗的時候發(fā)現(xiàn)自己被綠了哀托。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡劳秋,死狀恐怖仓手,靈堂內(nèi)的尸體忽然破棺而出胖齐,到底是詐尸還是另有隱情,我是刑警寧澤嗽冒,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布呀伙,位于F島的核電站,受9級特大地震影響添坊,放射性物質(zhì)發(fā)生泄漏剿另。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一帅腌、第九天 我趴在偏房一處隱蔽的房頂上張望驰弄。 院中可真熱鬧,春花似錦速客、人聲如沸戚篙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽岔擂。三九已至,卻和暖如春浪耘,著一層夾襖步出監(jiān)牢的瞬間乱灵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工七冲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留痛倚,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓澜躺,卻偏偏與公主長得像蝉稳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子掘鄙,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容