主要用到python中的datetime模块和re模块解决问题,时间模块主要进行当前时间, 时间差的求取以及给定时间的转换,而re模块主要用于天数,小时数,分钟数的正则匹配问题。 以下是思路:
1.把已知时间转换为datetime对象 2.获取当前的时间 3.两个时间对象相减,获取时间差对象,并转换为string 4.进行正则匹配天数,小时,分钟 5.如果天数小于0.则获取小时数,如果小时小于0,则获取分钟 代码实现:
# encoding=utf-8from datetime import datetimeimport redate_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 Noneif 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)