python如何标准化日期时间格式转化成非标准化格式

 更新时间:2024年06月21日 16:46:04   作者:够力小哥  
这篇文章主要介绍了python如何标准化日期时间格式转化成非标准化格式问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

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了!

Python时间标准化问题

Python中日期格式化是非常常见的操作,Python 中能用很多方式处理日期和时间,转换日期格式是一个常见的功能。

1.获取时间的基本方法

  • 1.1 time.time()

time time() 函数返回当前时间的时间戳(1970纪 元后经过的浮点秒数)。通常来说,时间戳表示的是从 1970 年 1 月 1 日 00:00:00 开始按秒计算的偏移量。

import time
timeStamp = time.time()
# print(current_time) 
# 输出: 1614846609.368156
  • 1.2 time.localtime()

time localtime() 函数类似gmtime(),作用是格式化时间戳为本地的时间, 以时间元祖(struct_time)的形式返回。

import time
struct_time = time.localtime()
# print(struct_time) 
# 输出: time.struct_time(tm_year=2021, tm_mon=3, tm_mday=4, tm_hour=16, tm_min=30, tm_sec=10, tm_wday=3, tm_yday=63, tm_isdst=0)
  • 1.3 datetime.datetime.now()
import datetime
data_time = datetime.datetime.now()
# print(data_time)
# 输出: 2021-03-04 16:30:10.000000

2. 格式化时间(基于时间元祖)

下面我们对 struct_time = time.localtime() 获取的时间元祖形式的时间进行格式化.

  • 2.1 time.asctime()
format_time_1 = time.asctime(struct_time)
# print(format_time_1)
# 输出: Thu Mar  4 16:30:10 2021
  • 2.2 time.strftime()
format_time_2 = time.strftime("%Y-%m-%d %H:%M:%S", struct_time) 
# print(format_time_2)
# 输出: 2021-03-04 16:30:10

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)

3. 时间的常用操作

  • 3.1 字符串时间转换为时间戳
t = "2021-03-04 16:30:10"
#将其转换为时间数组
timeStruct = time.strptime(t, "%Y-%m-%d %H:%M:%S" )
#转换为时间戳:
timeStamp = int (time.mktime(timeStruct))
# print (timeStamp)
# 输出: 1614846610
  • 3.2 时间戳转换为指定格式日期
timeStamp = 1614846610
localTime = time.localtime(timeStamp)
strTime = time.strftime( "%Y-%m-%d %H:%M:%S" , localTime)
print (strTime)
# 输出: 2021-03-04 16:30:10
  • 3.3 获得三天前的时间
import time
import datetime
#先获得时间数组格式的日期
threeDayAgo = (datetime.datetime.now() - datetime.timedelta(days=3))
#转换为时间戳:
timeStamp = int(time.mktime(threeDayAgo.timetuple()))
#转换为其他字符串格式:
strTime = threeDayAgo.strftime( "%Y-%m-%d %H:%M:%S" )
# print (strTime)
# 输出: 2021-03-01 16:30:10

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python利用有道翻译实现

    python利用有道翻译实现"语言翻译器"的功能实例

    小编就为大家分享一篇python利用有道翻译实现"语言翻译器"的功能实例。具有比较好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-11-11
  • pandas 对每一列数据进行标准化的方法

    pandas 对每一列数据进行标准化的方法

    今天小编就为大家分享一篇pandas 对每一列数据进行标准化的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • python pycharm安装第三方包失败(使用pip安装失败)的解决方案

    python pycharm安装第三方包失败(使用pip安装失败)的解决方案

    这篇文章主要给大家介绍了关于python pycharm安装第三方包失败(使用pip安装失败)的解决方案,文中将可能遇到的几种情况都进行了分析并给出了详细的解决方案,需要的朋友可以参考下
    2023-11-11
  • 使用Python创建本地HTTP服务器实现与外部系统数据对接的全过程

    使用Python创建本地HTTP服务器实现与外部系统数据对接的全过程

    在Python 3.10中创建一个能够处理GET和POST请求的本地HTTP服务器,并提供一个默认的 index.html 页面是完全可行的,本文我将提供一个实现方案,它包含一个自定义的请求处理器,并会说明如何创建 index.html 文件,需要的朋友可以参考下
    2025-09-09
  • 关于python安装第三方库的问题与解决方案

    关于python安装第三方库的问题与解决方案

    Python开发中经常遇到第三方库安装困难的问题,速度慢可以使用国内镜像如清华镜像加速,若遇到wheel错误,可以手动下载whl文件进行安装,对于找不到的包,可以尝试在Python的官方包发布网站上进行搜索和下载,本文提供了具体的解决方案和操作步骤
    2024-10-10
  • 用Python解数独的方法示例

    用Python解数独的方法示例

    这篇文章主要介绍了用Python解数独的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • python实现在pickling的时候压缩的方法

    python实现在pickling的时候压缩的方法

    这篇文章主要介绍了python实现在pickling的时候压缩的方法,比较具有实用价值,需要的朋友可以参考下
    2014-09-09
  • Pytorch可视化之Visdom使用实例

    Pytorch可视化之Visdom使用实例

    Visdom 是一个专门用于 PyTorch 的交互式可视化工具,可以对实时数据进行丰富的可视化,帮助我们实时监控在远程服务器上进行的科学实验,这篇文章主要给大家介绍了关于Pytorch可视化之Visdom使用的相关资料,需要的朋友可以参考下
    2021-08-08
  • python 类的继承 实例方法.静态方法.类方法的代码解析

    python 类的继承 实例方法.静态方法.类方法的代码解析

    这篇文章主要介绍了python 类的继承 实例方法.静态方法.类方法的代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 使用Python检测文章抄袭及去重算法原理解析

    使用Python检测文章抄袭及去重算法原理解析

    文章去重(或叫网页去重)是根据文章(或网页)的文字内容来判断多个文章之间是否重复。这篇文章主要介绍了用Python写了个检测文章抄袭,详谈去重算法原理,需要的朋友可以参考下
    2019-06-06

最新评论