设置相对日期的格式

发布于 2024-08-29 04:00:30 字数 102 浏览 3 评论 0原文

是否有一个 ruby​​ gem 可以格式化相对于当前时间的日期?我想要像“明天下午 5 点”、“下周星期四下午 5:15”这样的输出,我不太关心确切的输出,只要它是自然语言中的相对日期即可

Is there a ruby gem that will format dates relative to the current time? I want output like "Tomorrow at 5pm", "Thursday next week at 5:15pm", I'm not too concerned about the exact output, just as long as it's relative dates in natural language

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

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

发布评论

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

评论(2

↘紸啶 2024-09-05 04:00:30

如果你有rails,我认为 ActionView::Helpers:: DateHelper#distance_of_time_in_words 对此有所帮助。

require 'rubygems'
require 'action_view'
include ActionView::Helpers::DateHelper

from_time = Time.now
distance_of_time_in_words(from_time, from_time + 50.minutes)        # => about 1 hour
distance_of_time_in_words(from_time, 50.minutes.from_now)           # => about 1 hour
distance_of_time_in_words(from_time, from_time + 15.seconds)        # => less than a minute
distance_of_time_in_words(from_time, from_time + 15.seconds, true)  # => less than 20 seconds
distance_of_time_in_words(from_time, 3.years.from_now)              # => over 3 years
distance_of_time_in_words(from_time, from_time + 60.hours)          # => about 3 days
distance_of_time_in_words(from_time, from_time + 45.seconds, true)  # => less than a minute
distance_of_time_in_words(from_time, from_time - 45.seconds, true)  # => less than a minute
distance_of_time_in_words(from_time, 76.seconds.from_now)           # => 1 minute
distance_of_time_in_words(from_time, from_time + 1.year + 3.days)   # => about 1 year
distance_of_time_in_words(from_time, from_time + 4.years + 9.days + 30.minutes + 5.seconds) # => over 4 years

to_time = Time.now + 6.years + 19.days
distance_of_time_in_words(from_time, to_time, true)     # => over 6 years
distance_of_time_in_words(to_time, from_time, true)     # => over 6 years
distance_of_time_in_words(Time.now, Time.now)           # => less than a minute

如果相对于当前时间,请使用 distance_of_time_in_words_to_now 而不是 distance_of_time_in_words

如果您的应用是基于 Rails 的,则只需在视图中使用 distance_of_time_in_wordsdistance_of_time_in_words_to_nowtime_ago_in_words 即可。

if you have rails, I think ActionView::Helpers::DateHelper#distance_of_time_in_words helps that.

require 'rubygems'
require 'action_view'
include ActionView::Helpers::DateHelper

from_time = Time.now
distance_of_time_in_words(from_time, from_time + 50.minutes)        # => about 1 hour
distance_of_time_in_words(from_time, 50.minutes.from_now)           # => about 1 hour
distance_of_time_in_words(from_time, from_time + 15.seconds)        # => less than a minute
distance_of_time_in_words(from_time, from_time + 15.seconds, true)  # => less than 20 seconds
distance_of_time_in_words(from_time, 3.years.from_now)              # => over 3 years
distance_of_time_in_words(from_time, from_time + 60.hours)          # => about 3 days
distance_of_time_in_words(from_time, from_time + 45.seconds, true)  # => less than a minute
distance_of_time_in_words(from_time, from_time - 45.seconds, true)  # => less than a minute
distance_of_time_in_words(from_time, 76.seconds.from_now)           # => 1 minute
distance_of_time_in_words(from_time, from_time + 1.year + 3.days)   # => about 1 year
distance_of_time_in_words(from_time, from_time + 4.years + 9.days + 30.minutes + 5.seconds) # => over 4 years

to_time = Time.now + 6.years + 19.days
distance_of_time_in_words(from_time, to_time, true)     # => over 6 years
distance_of_time_in_words(to_time, from_time, true)     # => over 6 years
distance_of_time_in_words(Time.now, Time.now)           # => less than a minute

In case of relative to the current time, use distance_of_time_in_words_to_now instead of distance_of_time_in_words.

If your app is rails-based, just use distance_of_time_in_words, distance_of_time_in_words_to_now, time_ago_in_words in view.

三寸金莲 2024-09-05 04:00:30

尝试一下“慢性”宝石,

它完全符合您的要求。

try the gem 'chronic'

it does exactly what you ask.

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