Python 時(shí)間管理

1.相關(guān)概念

  • 時(shí)間戳(timestamp):格林威治時(shí)間1970年01月01日00時(shí)00分00秒(北京時(shí)間1970年01月01日08時(shí)00分00秒)http://tool.chinaz.com/Tools/unixtime.aspx

  • 時(shí)區(qū)(TimeZone):1884年在華盛頓召開的一次國際經(jīng)度會(huì)議(又稱國際子午線會(huì)議)上扯饶,規(guī)定將全球劃分 為24個(gè)時(shí)區(qū)(東姑隅、西各12個(gè)時(shí)區(qū))础米。規(guī)定英國(格林尼治天文臺(tái)舊址)為中時(shí)區(qū)(零時(shí)區(qū))果覆、東1-12區(qū),西1-12 區(qū)闭树。
    計(jì)算的區(qū)時(shí)=已知區(qū)時(shí)-(已知區(qū)時(shí)的時(shí)區(qū)-要計(jì)算區(qū)時(shí)的時(shí)區(qū))朴爬,(注:東時(shí)區(qū)為正,西時(shí)區(qū)為負(fù))惰帽。

    例1:已知東京(東九區(qū))時(shí)間為5月1日12:00憨降,求北京(東八區(qū))的區(qū)時(shí)? 北京時(shí)間=12:00-(9-8)=11:00(即北京時(shí)間為5月1日11:00)该酗。
    例2:已知北京時(shí)間為5月1日12:00授药,求倫敦(中時(shí)區(qū))的區(qū)時(shí)士嚎? 倫敦時(shí)間=12:00-(8-0)=4:00(即倫敦時(shí)間為5月1日4:00)

  • UTC(Coordinated Universal Time)協(xié)調(diào)時(shí)間:是最主要的 世界時(shí)間標(biāo)準(zhǔn),其以原子時(shí)秒長為基礎(chǔ)悔叽,在時(shí)刻上盡量接近于格林尼治標(biāo)準(zhǔn)時(shí)間莱衩。

datetime 模塊的應(yīng)用

import datetime 
from datetime import datetime

datetime.now()  # 當(dāng)前時(shí)間 datetime.datetime(2019, 9, 2, 14, 53, 46, 454441)

'{dt:%Y-%m-%d}'.format(dt=datetime.now())  # 格式化指定時(shí)間: '2019-09-02'
f'{datetime.now():%Y-%m-%d}'  # 格式化的簡寫方式

'{dt:%Y-%m-%d %H:%M}'.format(dt=datetime.now())  # 格式化帶時(shí)分:'2018-05-07 10:21'
'{dt:%Y/%m/%d}'.format(dt=datetime.now())  # '2018/05/07' 

from datetime import date
d = date(2034,8,8)  # date(year, month, day) --> date object 轉(zhuǎn)化為:2034-08-08

date.today()  # datetime.date(2019, 9, 2)  當(dāng)前時(shí)間

from datetime import time
time(12,4)  #  12:04:00  time([hour[, minute[, second[, microsecond[, tzinfo]]]]]) --> a time object

# 時(shí)間中的各種計(jì)算
from datetime import timedelta
d = timedelta(days=1)  # 根據(jù)參數(shù),生成多少間隔的一個(gè)時(shí)間間隔對象
print(d)  # 1 day, 0:00:00
d = timedelta(hours=1)
print(d)  # 1:00:00
d = timedelta(days=1, hours=5)
print(d)  # 1 day, 5:00:00

today = date.today()
print(today)  # 2019-09-02 

future = today + d
print(future)  # 2019-09-03  一天以后
future = today + d*10  #  2019-09-14 十天以后

today = date.today() 
print(type(today))   # <class 'datetime.date'>
print(today.day)   # 2號
print(today.month)  # 9月

count = future - today
print(count)  # 12 days, 0:00:00  計(jì)算時(shí)間差
count.days  # 12

# 從時(shí)間戳生成datetime
import time
t = time.time()
print(t)  # 1567408866.025311

# 兩種格式之間的轉(zhuǎn)化
from datetime import datetime
datetime.utcfromtimestamp(t)  #  datetime.datetime(2019, 9, 2, 7, 21, 6, 25311)
print(datetime(2018, 5, 7, 2, 40, 55, 263683))  # 2018-05-07 02:40:55.263683

# 格式化字符串表示時(shí)間 # strftime: % ->   1999-12-12, 把代碼里面的時(shí)間對象轉(zhuǎn)成人類認(rèn)識(shí)的字符串娇澎,f:format # strptime:  2000-12-12 -> object笨蚁,把人類認(rèn)識(shí)的字符串,轉(zhuǎn)成代碼里面的對象趟庄,p括细,parse
from datetime import datetime
dt = datetime(2088, 8, 8, 8, 8) 
print(dt)  # 2088-08-08 08:08:00 
dt.strftime('%Y/%m/%d %X')  # '2088/08/08 08:08:00'
dt.strftime('%A %B %Y')  # 'Sunday August 2088'

datetime.strptime('Sunday August 2088', '%A %B %Y')  # 拼格式,原路返回datetime.datetime(2088, 8, 1, 0, 0)

datetime.strptime('2088/08/08 08:08:00', '%Y/%m/%d %X')  # datetime.datetime(2088, 8, 8, 8, 8)


使用dateutil更好的控制日期

# pip install python-dateutil 
#https://dateutil.readthedocs.io/en/stable/examples.html#relativedelta-examples 
# timedelta不夠用, 處理跨星期戚啥,跨月奋单,跨年的計(jì)算麻煩 # class datetime.timedelta(days=0, seconds=0, microseconds=0, 
# milliseconds=0, minutes=0, hours=0, weeks=0)

# 下周的星期三是幾號
from datetime import datetime 
from dateutil.relativadelta import relativadelta
from dateutil.rrule import *   # MO,TU,WE,TH,FR

d = datetime.now()
print(d)  # 2018-05-07 11:59:11.850740
print(d + relativedelta(weekday=WE))  # 2018-05-09 11:59:11.850740
print(d + relativedelta(weekday=WE, weeks=-1))  # 2018-05-02 11:59:11.850740

# 過一個(gè)月,三個(gè)月時(shí)哪天虑鼎?不能簡單+30辱匿,+31
from datetime import date
date(2018,1,30) + relativedelta(months=+8)  # 往后8個(gè)月就是‘+8’ ,往后8個(gè)月就是‘-8’   datetime.date(2018, 9, 30) 

date(2018,2,25) + relativedelta(months=+1)  # datetime.date(2018, 3, 25) 

date(2018,2,28) + relativedelta(months=-1)  # datetime.date(2018, 1, 28)

date(2018,2,25) + relativedelta(months=-10)  # datetime.date(2017, 4, 25)

date(2018,2,25) + relativedelta(years=-1)  # datetime.date(2017, 2, 25)



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末炫彩,一起剝皮案震驚了整個(gè)濱河市匾七,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌江兢,老刑警劉巖昨忆,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異杉允,居然都是意外死亡邑贴,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進(jìn)店門叔磷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拢驾,“玉大人,你說我怎么就攤上這事改基》卑蹋” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵秕狰,是天一觀的道長稠腊。 經(jīng)常有香客問我,道長鸣哀,這世上最難降的妖魔是什么架忌? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮我衬,結(jié)果婚禮上叹放,老公的妹妹穿的比我還像新娘饰恕。我一直安慰自己,他們只是感情好许昨,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布懂盐。 她就那樣靜靜地躺著,像睡著了一般糕档。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拌喉,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天速那,我揣著相機(jī)與錄音,去河邊找鬼尿背。 笑死端仰,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的田藐。 我是一名探鬼主播荔烧,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼汽久!你這毒婦竟也來了鹤竭?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤景醇,失蹤者是張志新(化名)和其女友劉穎臀稚,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體三痰,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吧寺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了散劫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稚机。...
    茶點(diǎn)故事閱讀 40,110評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖获搏,靈堂內(nèi)的尸體忽然破棺而出赖条,到底是詐尸還是另有隱情,我是刑警寧澤颜凯,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布谋币,位于F島的核電站,受9級特大地震影響症概,放射性物質(zhì)發(fā)生泄漏蕾额。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一彼城、第九天 我趴在偏房一處隱蔽的房頂上張望诅蝶。 院中可真熱鬧退个,春花似錦、人聲如沸调炬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缰泡。三九已至刀荒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間棘钞,已是汗流浹背缠借。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宜猜,地道東北人泼返。 一個(gè)月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像姨拥,于是被迫代替她去往敵國和親绅喉。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評論 2 355

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