python 中的 gmail 风格日期格式

发布于 2024-11-27 23:19:51 字数 209 浏览 0 评论 0原文

我可以在 python 中使用 strftime 格式化日期,但现在我想显示 日期格式相对于当前时间。

即如果日期接近今天,则及时显示。

如果是在一周内,则显示为昨天等。

如果是在一个月内,则显示为上周或上个月。

如果它早于显示为实际值。

我可以用很多 if 来做到这一点,但是有没有更简单的方法来做到这一点?或者图书馆?

I can format date with strftime in python, but now I want to show
date in format relative to current time.

i.e. if date is near today, show in time.

if it is within week, show as yesterday etc.

if it is within month just show as last week or month.

if it is older than that show as actual value.

I can do it with lots of ifs but is there any simpler way to do this? or library?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

谁许谁一生繁华 2024-12-04 23:19:51

是一个库

来自 文档,

[python]
>>> from relativeDates import *
>>> import time
>>> x = time.time()-1000
>>> getRelativeTime(x)
'17 minutes ago'
>>> x-=12345
>>> getRelativeTime(x)
'3 hours ago'
>>> x+=543211
>>> getRelativeTime(x)
'in 6 days'
>>> getRelativeTime(x,accuracy=2)
'in 6 days 3 hours'
>>> x-=987661
>>> getRelativeTime(x,accuracy=2)
'5 days 7 hours ago'
>>> getRelativeTime(x,accuracy=2,alternative_past="long long ago")
'long long ago'
>>> getRelativeTimeStr("07/15/06 1823")
'in 4 days'
>>> getRelativeTimeStr("07/10/06 1823")
'7 hours ago'
>>> getRelativeTimeStr("07/10/06 1823",accuracy=2)
'7 hours 30 mins ago'
[/python]

There is a library

From the documentation,

[python]
>>> from relativeDates import *
>>> import time
>>> x = time.time()-1000
>>> getRelativeTime(x)
'17 minutes ago'
>>> x-=12345
>>> getRelativeTime(x)
'3 hours ago'
>>> x+=543211
>>> getRelativeTime(x)
'in 6 days'
>>> getRelativeTime(x,accuracy=2)
'in 6 days 3 hours'
>>> x-=987661
>>> getRelativeTime(x,accuracy=2)
'5 days 7 hours ago'
>>> getRelativeTime(x,accuracy=2,alternative_past="long long ago")
'long long ago'
>>> getRelativeTimeStr("07/15/06 1823")
'in 4 days'
>>> getRelativeTimeStr("07/10/06 1823")
'7 hours ago'
>>> getRelativeTimeStr("07/10/06 1823",accuracy=2)
'7 hours 30 mins ago'
[/python]
我们只是彼此的过ke 2024-12-04 23:19:51

django.contrib. humanize.naturaltime

对于日期时间值,返回表示多少秒的字符串,
几分钟或几小时前 - 如果出现以下情况,则返回更长的日期格式
该值已存在超过一天。如果日期时间值位于
将来的返回值将自动使用适当的短语。

示例(当“现在”为 2007 年 2 月 17 日 16:30:00 时):

2007 年 2 月 17 日 16:30:00 变为现在。
2007 年 2 月 17 日 16:29:31 变为 29 秒前。
2007 年 2 月 17 日 16:29:00 变为一分钟前。
2007 年 2 月 17 日 16:25:35 变为 4 分钟前。
2007 年 2 月 17 日 15:30:29 变为一小时前。
2007 年 2 月 17 日 13:31:29 变为 2 小时前。
2007 年 2 月 16 日 13:31:29 变为 1 天前。
2007 年 2 月 17 日 16:30:30 从现在起变为 29 秒。
2007 年 2 月 17 日 16:31:00 从现在开始变为一分钟。
2007 年 2 月 17 日 16:34:35 从现在开始变为 4 分钟。
2007 年 2 月 17 日 16:30:29 变为一小时后。
2007 年 2 月 17 日 18:31:29 变为距现在 2 小时。
2007 年 2 月 18 日 16:31:29 变为 1 天后。

您可以获取源 此处

django.contrib.humanize.naturaltime

For datetime values, returns a string representing how many seconds,
minutes or hours ago it was – falling back to a longer date format if
the value is more than a day old. In case the datetime value is in the
future the return value will automatically use an appropriate phrase.

Examples (when ‘now’ is 17 Feb 2007 16:30:00):

17 Feb 2007 16:30:00 becomes now.
17 Feb 2007 16:29:31 becomes 29 seconds ago.
17 Feb 2007 16:29:00 becomes a minute ago.
17 Feb 2007 16:25:35 becomes 4 minutes ago.
17 Feb 2007 15:30:29 becomes an hour ago.
17 Feb 2007 13:31:29 becomes 2 hours ago.
16 Feb 2007 13:31:29 becomes 1 day ago.
17 Feb 2007 16:30:30 becomes 29 seconds from now.
17 Feb 2007 16:31:00 becomes a minute from now.
17 Feb 2007 16:34:35 becomes 4 minutes from now.
17 Feb 2007 16:30:29 becomes an hour from now.
17 Feb 2007 18:31:29 becomes 2 hours from now.
18 Feb 2007 16:31:29 becomes 1 day from now.

You can get the sources here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文