欢迎访问宙启技术站
智能推送

用Python实现自然时间格式的转换方法

发布时间:2024-01-13 18:01:15

要实现自然时间格式的转换方法,即将一个时间戳或日期转换为类似于"2小时前"、"昨天"、"3天前"等自然语言表示的格式,可以使用datetime库来辅助实现。

首先,需要导入datetime库,代码如下:

from datetime import datetime, timedelta

接下来,可以定义一个函数来实现时间转换,代码如下:

def natural_time(timestamp):
    current_time = datetime.now()
    time_diff = current_time - timestamp

    if time_diff < timedelta(minutes=1):
        return "刚刚"
    elif time_diff < timedelta(hours=1):
        return "{}分钟前".format(int(time_diff.total_seconds() / 60))
    elif time_diff < timedelta(days=1):
        return "{}小时前".format(int(time_diff.total_seconds() / 3600))
    elif time_diff < timedelta(days=2):
        return "昨天"
    elif time_diff < timedelta(days=7):
        return "{}天前".format(int(time_diff.total_seconds() / 86400))
    else:
        return timestamp.strftime("%Y-%m-%d %H:%M:%S")

在函数中,首先获取当前时间current_time,并计算当前时间与给定时间戳或日期的差值time_diff。

然后,通过对time_diff的大小进行判断,根据差值的大小返回不同的自然时间格式。

- 如果差值小于1分钟,则返回"刚刚"。

- 如果差值小于1小时,则返回几分钟前。

- 如果差值小于1天,则返回几小时前。

- 如果差值小于2天,则返回"昨天"。

- 如果差值小于7天,则返回几天前。

- 否则,返回完整的日期时间格式。

下面是一个使用该方法的例子:

timestamp = datetime(year=2022, month=1, day=1, hour=10, minute=30)
print(natural_time(timestamp))

输出结果为:

11天前

这个例子中,给定的时间戳为2022年1月1日10点30分,当前时间是2022年1月12日,因此差值为11天,函数返回"11天前"。

通过以上的方法,我们可以将时间戳或日期转换为自然时间格式的表示。