是否有一种简单的方法可以确定一年是否是闰年?
答案 0 :(得分:54)
Date#leap?
。now = DateTime.now
flag = Date.leap?( now.year )
e.g。
Date.leap?( 2018 ) # => false
Date.leap?( 2016 ) # => true
答案 1 :(得分:8)
试试这个:
is_leap_year = year % 4 == 0 && year % 100 != 0 || year % 400 == 0
答案 2 :(得分:8)
为了您的理解:
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
答案 3 :(得分: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
答案 4 :(得分:2)
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)
答案 5 :(得分:1)
可以平均除以4的年份是a年。但是,仍然必须解决一个小错误。为了消除此错误,公历规定只有被100整除的年份(例如1900)也可以是a年,除非它也可以被400整除。
class Date
def self.leap?(year)
year % 4 == 0 && year % 100 != 0 || year % 400 == 0
end
end
答案 6 :(得分:0)
这个需要一个范围:
(starting..ending).each do |year|
next if year % 4 != 0
next if year % 100 == 0 && year % 400 != 0
puts year
end
资料来源:Chris Pine学习编程
答案 7 :(得分:0)
使用尽可能少的比较,您可以这样做:
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
我们可以使用短路OR(||
)进行相同的检查:
def leap_year?(year)
year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)
end
答案 8 :(得分:0)
变量 n 需要一年的时间来测试并打印 true (如果它是闰年)和 false ,如果不是。
n=gets.to_i
n%4==0 ? n%100==0 ? n%400 ?(puts true):(puts false) :(puts true) :(puts false)