Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.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 如何在Rails中一步将X个月转换为Y天?_Ruby On Rails - Fatal编程技术网

Ruby on rails 如何在Rails中一步将X个月转换为Y天?

Ruby on rails 如何在Rails中一步将X个月转换为Y天?,ruby-on-rails,Ruby On Rails,我将一个配置值存储为3.months,另一个从计算返回的值存储为7.days 我需要找出他们的不同之处。什么是使它们正常化的最简单和最容易的方法,这样我就可以从3.个月中减去7.天?我可以使用.to_I将.month转换为天,乘以一天中的秒数,但这样从月到秒再到天的计算感觉相当冗长: x = (3.months.to_i/86400).days => 90 days x - 7.days => 83 days 有更快捷的方法吗?不确定是否更好,但: end_date

我将一个配置值存储为
3.months
,另一个从计算返回的值存储为
7.days

我需要找出他们的不同之处。什么是使它们正常化的最简单和最容易的方法,这样我就可以从
3.个月
中减去
7.天
?我可以使用.to_I将.month转换为天,乘以一天中的秒数,但这样从月到秒再到天的计算感觉相当冗长:

  x = (3.months.to_i/86400).days
  => 90 days
  x - 7.days
  => 83 days

有更快捷的方法吗?

不确定是否更好,但:

end_date = Date.today.advance(months: 3) - 7.days
(end_date - Date.today).to_i #=> 83

如果我理解正确,你可以这样从另一个中减去它们:

(3.months - 7.days)/86400 #=> 83

月和日方法都返回秒的整数。

如果您想将每个术语保留为时间单位,我建议:

 (3.months - 7.days)/1.day

我觉得对于另一个开发人员来说,这是最干净、最容易理解您想要描述的内容。

有趣的是,
3.months.days
是有效的,但与直觉相反(甚至是无效的?),考虑到输出:
7776000天
(3.months-7.days)/86400天