Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 从现在到每月第二个星期二之间的Ruby时间(天/小时/分钟)_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 从现在到每月第二个星期二之间的Ruby时间(天/小时/分钟)

Ruby on rails 从现在到每月第二个星期二之间的Ruby时间(天/小时/分钟),ruby-on-rails,ruby,Ruby On Rails,Ruby,我使用的是ruby 2.0.0和rails 4.0.0 我有一个web服务调用,它将在每个月1日运行 它的工作是安排电子邮件在每月的第二个星期二发出 “Scheduler”web服务调用具有如下参数: ?1d&1h&1m计划表 这将安排电子邮件在api调用执行后1天、1小时和1分钟发出 在调用API之前,我需要计算“time.now”和每月第二个星期二之间的时间,以天、小时和分钟为单位 我如何写出代码并以上面“1d&1h&1m”的格式获取它?def schedule 现在=时间 Second周二

我使用的是ruby 2.0.0和rails 4.0.0

我有一个web服务调用,它将在每个月1日运行

它的工作是安排电子邮件在每月的第二个星期二发出

“Scheduler”web服务调用具有如下参数:

?1d&1h&1m计划表

这将安排电子邮件在api调用执行后1天、1小时和1分钟发出

在调用API之前,我需要计算“
time.now
”和每月第二个星期二之间的时间,以天、小时和分钟为单位

我如何写出代码并以上面“
1d&1h&1m
”的格式获取它?

def schedule
现在=时间
Second周二=8+(2次本地(现在.年,现在.月,1.wday)%7
s=时间.本地(现在.年,现在.月,第二个星期二)-现在

dhm=[24*36003600,60]。注入([]){a,b | x,s=s.divmod(b);aI不理解参数值。
1d&1h
是否等同于
25h
?如果是周日晚上10点,并且邮件将在周二凌晨3点发出,是
1d&5h
还是
2d&3h
1d&1h
等同于
25h
。我正在构建,只是为了避免开发人员与调度程序出现问题尼莫尔。
def scheduleSecondTuesday
  now = Time.now
  secondTuesday = 8 + (2-Time.local(now.year,now.month,1).wday) % 7
  s = Time.local(now.year,now.month,secondTuesday) - now
  dhm = [24*3600,3600,60].inject([]) { |a,b| x,s = s.divmod(b); a<<x }
  '?schedule_for_%dd&%dh&%dm' % dhm
end

scheduleSecondTuesday
# => "?schedule_for_5d&9h&48m"