Ruby将时间戳转换为Ruby中的年份

时间:2011-05-13 01:06:20

标签: ruby datestamp

  

可能重复:
  How to calculate how many years passed since a given date in Ruby?

我正在尝试将从数据库中取得的日期戳转换为表示一个人多少岁的值。我确信这很容易,但我似乎无法弄明白。

1 个答案:

答案 0 :(得分:2)

假设正在以DateTime值检索日期戳:

require 'date'

birth_date = DateTime.parse('1970-01-01 1:35 AM')
time_now = DateTime.now

(time_now - birth_date).to_i / 365 # => 41
(time_now - birth_date).to_f / 365 # => 41.38907504054664

birth_date是您应该从数据库中检索的内容的模拟值。第一个值是年,第二个是分数年。

或者,你可以这样做:

years = time_now.year - birth_date.year
years -= 1 if (birth_date.month > time_now.month)
years # => 41

如果此人尚未过生日,则进行调整。例如,调整生日:

birth_date = DateTime.parse('1970-12-31 11:59 PM')
years = time_now.year - birth_date.year
years -= 1 if (birth_date.month > time_now.month)
years # => 40