1

在 Rails 中,我有一个保存在实例变量中的日期。我需要抓住它之前十年的开始。如果 @date.year= 1968那时我需要返回1960。我该怎么做?

4

3 回答 3

6

您可以通过多种方式做到这一点。如建议的那样,您始终可以使用整数除法来除数并截断余数。所以1968/10返回196,如果你乘以它10,它会给你1960。或者简单地说,

@date.year = @date.year/10 * 10
@date.year 
=> 1960

我更喜欢使用模运算的方法。如果你这样做@date.year % 10,如果你除以它会返回余数,10然后你可以像这样从年份中减去:

@date.year = @date.year - (@date.year % 10)
@date.year 
=> 1960

我更喜欢后者的原因是因为整数除法截断余数对于查看您的代码的每个人来说可能不是显而易见的事情。但是,模算术在所有编程语言中的工作方式通常相同。

请记住,如果您尝试更改日期,则需要使用适当的方法

@date.change(:year => 1960)
于 2013-02-03T21:54:37.960 回答
3

只需除以和乘以整数:试试@date.year/10*10

于 2013-02-03T21:54:46.707 回答
2

将整数除以 10,然后乘以 10。

1.9.3-p286 :001 > 1855/10
 => 185 
1.9.3-p286 :002 > 185 * 10
 => 1850 

这有效的原因(在 Ruby 和 C/C++、Python 以及可能的许多其他语言中)是整数除法总是会截断余数。但是,如果您要除以浮点,则情况并非如此。

于 2013-02-03T21:54:34.563 回答