2月9日 Time and Date(Ruby基础)

Posted Mr-chen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2月9日 Time and Date(Ruby基础)相关的知识,希望对你有一定的参考价值。


 

根据生日计算年龄。

定义一个Person类,内含初始化method,  age method. 

require "date"

class Person
  attr_reader :birth_date

  # 通过 Person.new 获取关键参数生年月日
  def initialize(birth_date)
    @birth_date = birth_date
  end

  # 返回某个日期的年龄。没有指定日期则返回今天的年龄。
  def age(date=Date.today)
    # 如果是出生前则返回 -1 (错误)
    return -1 if date < birth_date

    years = date.year - birth_date.year

    if date.month < birth_date.month
      # #没满一年,所以减一年
      years -= 1
    elsif date.month == birth_date.month && date.day < birth_date.day
      # 还差不到一个月生日,所以减一年
      years -= 1
    end
    return years
  end
end

ruby = Person.new(Date.new(1993, 2, 24))
p ruby.birth_date                  # 生年月日
p ruby.age                         # 今天
p ruby.age(Date.new(2013, 2, 23))  # 20岁的前一天   19
p ruby.age(Date.new(2013, 2, 24))  # 20岁的生日    20
p ruby.age(Date.new(1988, 2, 24))  # 出生之前      -1

 

以上是关于2月9日 Time and Date(Ruby基础)的主要内容,如果未能解决你的问题,请参考以下文章

整理Java基础知识--Date & Time1

bat怎样能够生成带年月日时的文件名

time与date time模块

ruby 2015年9月14日时点

生成“年-月-日”形式的日期字符串

我试图比较两个日期“2017 年 5 月 1 日星期六”和“2017-07-23”,但第一个日期存储为字符串 [关闭]