主要用到python中的datetime模块和re模块解决问题,时间模块主要进行当前时间,
时间差的求取以及给定时间的转换,而re模块主要用于天数,小时数,分钟数的正则匹配问题。
以下是思路:
1.把已知时间转换为datetime对象
2.获取当前的时间
3.两个时间对象相减,获取时间差对象,并转换为string
4.进行正则匹配天数,小时,分钟
5.如果天数小于0.则获取小时数,如果小时小于0,则获取分钟
代码实现:
# encoding=utf-8 from datetime import datetime import re date_str = "2017-11-08 09:18:00" dt_obj = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S") # 转化为datetime对象 print(type(datetime.now() - dt_obj)) time_diff = str(datetime.now() - dt_obj) print(time_diff) # 显示天数 def cal_day(day_ago): if day_ago == 1: print("昨天") else: print("{}天前".format(str(day_ago))) # 显示小时 def cal_hour(hour_ago): if hour_ago > 0: print("{}小时前".format(str(hour_ago))) return True else: return False # 显示分钟 def cal_minute(minute_ago): print("{}分钟前".format(str(minute_ago))) # 获取天数 day_ago = re.findall("(\d\s)day", time_diff)[0] if len(re.findall("(\d\s)day", time_diff)) > 0 else None if day_ago is not None: day_ago = int(day_ago) cal_day(day_ago) else: # 获取小时 hour_ago = re.findall("(\d+):", time_diff)[0] hour_ago = int(hour_ago) flag = cal_hour(hour_ago) if flag is not True: # 获取分钟 minute_ago = re.findall(":(\d+):", time_diff)[0] minute_ago = int(minute_ago) cal_minute(minute_ago)