红宝石中的当前时间计算

时间:2017-02-27 13:02:31

标签: ruby time

我需要确定当前的当前时间,让用户知道是时候做一项特定的任务。例如,如果时间在小时数之间(例如,在早上6点到下午12点之间),则用户应该完成某项任务。如果时间在那之后(下午1点到6点之间),用户应该完成另一项任务,如果时间超出这些时间,他们应该做其他事情。

我不太了解ruby,以便发布我迄今为止所做过的代码示例。我所知道的是如何确定t = Time.now的当前时间以及如何确定时间是否在某些小时之间,我不知道如何将其放入方法中以确定是否hrs在给定时间之间告诉用户执行任务。

任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:2)

首先,熟悉usage of Time class in ruby

当你对它感到满意时,你会发现像下面这样的比较很简单。

2.3.1 :001 > n = Time.now.hour
 => 17 
2.3.1 :002 > n.between? 13, 18 #1 pm - 6 pm
 => true 
2.3.1 :004 > n.between? 6, 12
 => false 

注意:介于两者之间来自Comparable模块

你可以从下面的片段开始玩。

2.3.1 :001 > def task_for_night
2.3.1 :002?>   puts "night task started"
2.3.1 :003?>   end
 => :task_for_night 
2.3.1 :004 > def task_for_day
2.3.1 :005?>   puts "day time"
2.3.1 :006?>   end
2.3.1 :021 > def assign_task
2.3.1 :022?>   (Time.now.hour.between? 6,12) ? task_for_night : task_for_day
2.3.1 :023?>   end
 => :assign_task 
2.3.1 :024 > assign_task
day time
 => nil 

答案 1 :(得分:1)

带有case

ranges是您想要做的完美语法:

case Time.now.hour
when (6..12)
  puts "Task A"
when (13..18)
  puts "Task B"
else
  puts "Free time"
end

答案 2 :(得分:0)

获取当前时间(仅限小时:%H)并将其转换为整数。

(time.between? 6,12) ? "Do morning's task" : (time.between? 13,18) ? "Do afternoon's task" : "Do something else"

# Do afternoon's task

并检查嵌套三元运算符(条件运算符)中的时间条件

$array=json_decode($data,true); //data is your json_encoded data

foreach($array as $key=>$value)
{
echo $key . ' ' . $value . PHP_EOL;
}

答案 3 :(得分:0)

您也可以使用#case

def what_should_i_do_now?
  case Time.now.hour
  when 6..12 then 'Do morning task'
  when 13..18 then "Do afternoon's task"
  else "Do something else"
  end
end

现在你可以做更多的事了:

def what_should_i_do_at(time)
  case time.hour
  when 6..12 then 'Do morning task'
  when 13..18 then "Do afternoon's task"
  else "Do something else"
  end
end

> what_should_i_do_at(Time.now+60*60) # plus 1 hour
#=> "Do afternoon's task"