在 Rails 中使用和比较相对时间

发布于 2024-12-10 13:45:35 字数 180 浏览 1 评论 0原文

我需要知道如何在 Rails 中执行相对时间,但不是作为一个句子,更像是我可以做的事情(当我输入这样的格式 2008-08-05 23:48:04 -0400 时)

if time_ago < 1 hour, 3 weeks, 1 day, etc.
    execute me
end

I need to know how to do relative time in rails but not as a sentence, more like something i could do this with (when i input format like this 2008-08-05 23:48:04 -0400)

if time_ago < 1 hour, 3 weeks, 1 day, etc.
    execute me
end

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

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

发布评论

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

评论(2

信愁 2024-12-17 13:45:35

基本相对时间:

# If "time_ago" is more than 1 hour past the current time
if time_ago < 1.hour.ago
  execute_me
end

比较:

使用<来查看time_ago是否早于1.hour.ago,以及>> 查看 time_ago 是否比 1.hour.ago 更新

组合时间,并使用小数时间:

您可以组合时间,正如 davidb 提到的,并且做:

(1.day + 3.hours + 2500.seconds).ago

你也可以做小数秒,例如:
0.5.seconds.ago

没有 .milliseconds.ago,因此如果您需要毫秒精度,只需将其分解为小数秒即可。也就是说,1 毫秒前是:

0.001.seconds.ago

.ago() 一般而言:

.ago 放在任何数字的末尾都会将该数字视为 #of 秒。

您甚至可以在括号中使用分数:

(1/2.0).hour.ago   # half hour ago
(1/4.0).year.ago   # quarter year ago

注意:要使用分数,分子或分母必须是浮点数,否则 Ruby 会自动将答案转换为整数,并影响您的数学运算。

Basic relative time:

# If "time_ago" is more than 1 hour past the current time
if time_ago < 1.hour.ago
  execute_me
end

Comparison:

Use a < to see if time_ago is older than 1.hour.ago, and > to see if time_ago is more recent than 1.hour.ago

Combining times, and using fractional times:

You can combine times, as davidb mentioned, and do:

(1.day + 3.hours + 2500.seconds).ago

You can also do fractional seconds, like:
0.5.seconds.ago

There is no .milliseconds.ago, so if you need millisecond precision, just break it out into a fractional second. That is, 1 millisecond ago is:

0.001.seconds.ago

.ago() in general:

Putting .ago at the end of just about any number will treat the number as a #of seconds.

You can even use fractions in paranthesis:

(1/2.0).hour.ago   # half hour ago
(1/4.0).year.ago   # quarter year ago

NOTE: to use fractions, either the numerator or denominator needs to be a floating point number, otherwise Ruby will automatically cast the answer to an integer, and throw off your math.

甩你一脸翔 2024-12-17 13:45:35

你的意思是……像这样?

if time_ago < Time.now-(1.days+1.hour+1.minute)
    execute me
end

You mean sth. like this?

if time_ago < Time.now-(1.days+1.hour+1.minute)
    execute me
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文