📅  最后修改于: 2023-12-03 15:25:21.301000             🧑  作者: Mango
在许多应用程序中,我们需要将毫秒或秒格式化为人类可读的时间,例如“1 小时前”或“刚刚”。在这篇文章中,我们将探讨几种方法来实现这个功能。
我们可以手写一个函数来格式化秒为人类可读的时间。以下是一个示例函数:
def format_time(seconds):
minutes, seconds = divmod(seconds, 60)
hours, minutes = divmod(minutes, 60)
days, hours = divmod(hours, 24)
if days > 0:
return f"{days} day{'s' if days > 1 else ''} ago"
elif hours > 0:
return f"{hours} hour{'s' if hours > 1 else ''} ago"
elif minutes > 0:
return f"{minutes} minute{'s' if minutes > 1 else ''} ago"
else:
return "Just now"
这个函数根据秒的数量返回一个字符串,表示时间的范围。它首先将秒转换为分钟,然后将分钟转换为小时,天数,最后根据时间范围选择正确的语句返回。
Python 的 dateutil 库提供了一个相对简单的方式来将秒转换为人类可读的时间。以下是一个示例代码片段:
from dateutil.relativedelta import relativedelta
from datetime import datetime
def format_time(seconds):
now = datetime.now()
past_time = now - relativedelta(seconds=seconds)
return relativedelta(now, past_time).humanize()
这个函数使用 dateutil 库的 humanize() 方法来格式化时间。它首先获取当前日期和时间,然后从中减去过去的时间量。humanize() 方法将计算提供的时间差并返回一个人类可读的字符串。
Arrow 是一个用于 Python 的日期和时间处理库,它提供了一个相对容易的方法来格式化时间间隔。以下是一个示例代码片段:
import arrow
def format_time(seconds):
now = arrow.now()
past_time = now.shift(seconds=-seconds)
return past_time.humanize(now)
这个函数使用 Arrow 库的 humanize() 方法来格式化时间间隔。它首先获取当前日期和时间,并从中减去过去的时间量。humanize() 方法将计算提供的时间差并返回一个人类可读的字符串。
在本文中,我们探讨了三种不同的方法来将秒格式化为可读的时间。无论您选择哪种方法,都可以轻松地将时间格式化为人类可读的形式,以便在应用程序中显示。