问题
想要计算recordTime="2017-08-18+12:12:12"
与现在时间的差值
方案
将两个时间通过time
转化为时间元组,再转化为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中前五个元素
2、A if (A > B) else B
python三元运算符,可见三元运算符
3、time.strptime(string[, format])
根据指定的格式把一个时间字符串解析为时间元组
4、time.strftime(format[, t])
接收以时间元组,并返回以可读字符串表示的当地时间,格式由参数format决定
问题
这样算出来的只是秒数差,没有考虑到天数差,为了求全部秒数差,可以用timedelta.total_seconds()或者(td.microseconds + (td.seconds + td.days * 24 * 3600) * 106) / 106,可以参考Python-datetime计算两个时间差
参考文章
.days
方法精确到天
python中时间日期格式化符号:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身