python实现标准化日期时间格式转化成非标准化格式

场景示例

1.朋友圈里好友发布的动态帖子时间显示为:XX天前,XX月前,刚刚,X年前...

2.聊天消息上面显示的日期格式:刚刚,X分钟前...

需求说明:

1.要求将类似于2024-03-05 18:00:00这样的时间结合当前时间转化成1天前这样的格式。

2.只需要知道目标时间即可获取转化结果,如YYYY-MM-DD hh:mm:ss转成XXXX

废话不多说,直接代码演示:

from datetime import datetime, timedelta


def humanize_datetime(db_datetime_str):
    # 解析数据库日期时间字符串
    db_datetime = datetime.strptime(db_datetime_str, '%Y-%m-%d %H:%M:%S')

    # 获取当前时间
    now = datetime.now()

    # 计算时间差
    time_diff = now - db_datetime

    # 定义时间单位的阈值
    minute_diff = timedelta(minutes=1)
    hour_diff = timedelta(hours=1)
    day_diff = timedelta(days=1)
    month_diff = timedelta(days=30)  # 假设一个月平均30天
    year_diff = timedelta(days=365)  # 假设一年365天

    # 根据时间差计算描述
    if time_diff < minute_diff:
        return "刚刚"
    elif time_diff < 2 * minute_diff:
        return "1分钟前"
    elif time_diff < hour_diff:
        return f"{time_diff.seconds // 60}分钟前"
    elif time_diff < 2 * hour_diff:
        return "1小时前"
    elif time_diff < day_diff:
        return f"{time_diff.seconds // 3600}小时前"
    elif time_diff < 2 * day_diff:
        return "昨天"
    elif time_diff < month_diff:
        return f"{time_diff.days // 7}周前"
    elif time_diff < 2 * month_diff:
        return "1个月前"
    elif time_diff < year_diff:
        return f"{time_diff.days // 30}个月前"
    elif time_diff < 2 * year_diff:
        return "半年前"
    else:
        return db_datetime.strftime('%Y-%m-%d %H:%M:%S')


# 示例使用
# db_datetime = "2024-03-04 16:30:00"
# print(humanize_datetime(db_datetime))

代码说明:

1.以上代码中引入的包是python自带的

2.该函数传的时间格式为:YYYY-MM-DD hh:mm:ss

3.根据时间差计算可以衍生出许多情况的表达形式,以上只是作为示例

4.代码最后有使用演示,全部copy到项目跑一次就OK了!

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值