Python中时间类解决类似朋友圈时间显示的小问题

  主要用到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)

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值