有没有更简洁的方法来结合Ruby中的许多比较?

Shp*_*ord 2 ruby comparison if-statement

我目前有这个if声明:

if Time.now.day == 1 and Time.now.hour == 0 and Time.now.minute == 0 and Time.now.second == 0
Run Code Online (Sandbox Code Playgroud)

有没有更简洁的方法来做到这一点?

Lar*_*eth 5

您可以使用Time#to_a将您的时间转换为数组(秒,分钟,小时,日,月,年,星期日,日,星期日,区域):

Time.now.to_a  # => [20, 57, 16, 30, 11, 2010, 2, 334, false, "CET"]
Run Code Online (Sandbox Code Playgroud)

然后切掉你想要匹配的部分:

Time.now.to_a[0,4]  # => [20, 57, 16, 30]
Run Code Online (Sandbox Code Playgroud)

您的特定支票可以简洁如下:

if Time.now.to_a[0,4] == [0,0,0,1]
Run Code Online (Sandbox Code Playgroud)