有一种简单的方法来确定是否一年是闰年?
Answer 1:
使用Date#leap?
。
now = DateTime.now
flag = Date.leap?( now.year )
如
Date.leap?( 2018 ) # => false
Date.leap?( 2016 ) # => true
Answer 2:
试试这个:
is_leap_year = year % 4 == 0 && year % 100 != 0 || year % 400 == 0
Answer 3:
您的理解:
def leap_year?(year)
if year % 4 == 0
if year % 100 == 0
if yearVar % 400 == 0
return true
end
return false
end
return true
end
false
end
这可以写成:
def leap_year?(year)
(year % 4 == 0) && !(year % 100 == 0) || (year % 400 == 0)
end
Answer 4:
这里是我这问同样的问题exercism.io问题的答案。 你被明确告知忽略了可以实现它作为演习的一部分,任何标准库函数。
class Year
attr_reader :year
def initialize(year)
@year = year
end
def leap?
if @year.modulo(4).zero?
return true unless @year.modulo(100).zero? and not @year.modulo(400).zero?
end
false
end
end
Answer 5:
def leap_year?(num)
if num%4 == 0 && num%100 != 0
true
elsif num%400 == 0
true
elsif num%4 == 0 && num%100 == 0 && num%400 != 0
false
elsif num%4 != 0
false
end
end
puts leap_year?(2000)
Answer 6:
任何一年即能被4整除的是闰年。 但是,仍然是必须考虑的一个小错误。 为了消除这种误差,公历规定,一年就是100整除(例如,1900),只有当它也是400整除闰年。
class Date
def self.leap?(year)
year % 4 == 0 && year % 100 != 0 || year % 400 == 0
end
end
Answer 7:
这其中需要一个范围:
(starting..ending).each do |year|
next if year % 4 != 0
next if year % 100 == 0 && year % 400 != 0
puts year
end
来源:克里斯·派恩学习计划
Answer 8:
用最少的费用比较,你可以这样做:
- 首先/加长版
def leap_year?(year)
# check first if year is divisible by 400
return true if year % 400 == 0
year % 4 == 0 && year % 100 != 0
end
- 较短的版本
我们可以通过短路或(做同样的检查||
):
def leap_year?(year)
year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)
end
Answer 9:
变量n取一年来测试,如果它是一个闰年和虚假如果它不是真正的打印。
n=gets.to_i
n%4==0 ? n%100==0 ? n%400 ?(puts true):(puts false) :(puts true) :(puts false)
文章来源: Easy way to determine leap year in ruby?