gpt4 book ai didi

ruby - 用 Ruby 减去日期

转载 作者:数据小太阳 更新时间:2023-10-29 06:35:21 26 4
gpt4 key购买 nike

我只是看看 ruby​​,正在玩弄日期/时间。

irb(main):001:0> jamis_DOB = Time.mktime(2003, 10, 22, 06, 59)
=> Wed Oct 22 06:59:00 +0300 2003
irb(main):002:0> age = Time.now - jamis_DOB
=> 222934108.172989
irb(main):005:0> age_in_years = (((age / 3600) / 24) / 365).to_i
=> 7

所以我的例子不太好,因为 age_in_years 不知道这些年加起来是否有闰年。我已经浏览了一些用谷歌搜索的时间/日期教程,但还没有找到一种简单的方法来减去两个日期并让它以年、月、日等格式返回。我猜 ruby​​ 有一个附加组件或内置的东西来处理这种事情。有人能告诉我它是什么吗? (另外,对于如何找到此类问题的答案以供将来引用,有什么建议吗?)

谢谢。

最佳答案

你想要Date而不是 Time :

require 'date'

now = Date.today
before = Date.civil(2000, 1, 1)
difference_in_days = (now - before).to_i

(difference_in_days/365.25).to_i

会给你今天和 2000 年 1 月 1 日之间的年差。它可能会有所改进,我只是使用每年的平均天数 (365.25),这会给你正确的答案,除非在极端情况下。

你也可以这样做:

require 'date'

years = 0
d = Date.civil(2000, 1, 1)
loop do
d = d.next_year
break if Date.today < d
years += 1
end

但是 Date#next_year 是在 Ruby 1.9 中引入的,所以它在 1.8.7 中不起作用。

当然,确定两个日期之间的年数的最简单方法就是减去数字:

2010 - 2000 # => 10

关于ruby - 用 Ruby 减去日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4177102/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com