問題
想要計(jì)算recordTime="2017-08-18+12:12:12"
與現(xiàn)在時(shí)間的差值
方案
將兩個(gè)時(shí)間通過time
轉(zhuǎn)化為時(shí)間元組塘安,再轉(zhuǎn)化為datetime
類型辽故,使用datetime
直接作差濒憋,再使用.seconds
方法虏缸,將差值算到秒級
流程:
nowTime = time.localtime(time.time())
# nowTimeStr = time.strftime('%Y-%m-%d+%H:%M:%S',time.localtime(time.time()))
recordTime = time.strptime(recordArr[-1], "%Y-%m-%d+%H:%M:%S")
timeDiff = (datetime.datetime(*nowTime[0:5]) - \
datetime.datetime(*recordTime[0:5])).seconds \
if (nowTimeStr > recordArr[-1]) else 0
其中:
1温艇、*recordTime[0:5]
表示取列表recordTime中前五個(gè)元素
2鹅很、A if (A > B) else B
python三元運(yùn)算符攒至,可見三元運(yùn)算符
3厚者、time.strptime(string[, format])
根據(jù)指定的格式把一個(gè)時(shí)間字符串解析為時(shí)間元組
4、time.strftime(format[, t])
接收以時(shí)間元組嗓袱,并返回以可讀字符串表示的當(dāng)?shù)貢r(shí)間籍救,格式由參數(shù)format決定
問題
這樣算出來的只是秒數(shù)差,沒有考慮到天數(shù)差渠抹,為了求全部秒數(shù)差蝙昙,可以用timedelta.total_seconds()或者(td.microseconds + (td.seconds + td.days * 24 * 3600) * 106) / 106,可以參考Python-datetime計(jì)算兩個(gè)時(shí)間差
參考文章
.days
方法精確到天
python中時(shí)間日期格式化符號:
%y 兩位數(shù)的年份表示(00-99)
%Y 四位數(shù)的年份表示(000-9999)
%m 月份(01-12)
%d 月內(nèi)中的一天(0-31)
%H 24小時(shí)制小時(shí)數(shù)(0-23)
%I 12小時(shí)制小時(shí)數(shù)(01-12)
%M 分鐘數(shù)(00=59)
%S 秒(00-59)
%a 本地簡化星期名稱
%A 本地完整星期名稱
%b 本地簡化的月份名稱
%B 本地完整的月份名稱
%c 本地相應(yīng)的日期表示和時(shí)間表示
%j 年內(nèi)的一天(001-366)
%p 本地A.M.或P.M.的等價(jià)符
%U 一年中的星期數(shù)(00-53)星期天為星期的開始
%w 星期(0-6)梧却,星期天為星期的開始
%W 一年中的星期數(shù)(00-53)星期一為星期的開始
%x 本地相應(yīng)的日期表示
%X 本地相應(yīng)的時(shí)間表示
%Z 當(dāng)前時(shí)區(qū)的名稱
%% %號本身