在Ruby中,这个十年的第一年轮到了第一年

ben*_*_an 1 ruby ruby-on-rails date

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

sun*_*eja 6

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

@date.year = @date.year/10 * 10
@date.year 
=> 1960
Run Code Online (Sandbox Code Playgroud)

我更喜欢使用模运算的方法.如果你这样做@date.year % 10会返回余数,如果除以10你可以减去年份,如下所示:

@date.year = @date.year - (@date.year % 10)
@date.year 
=> 1960
Run Code Online (Sandbox Code Playgroud)

我更喜欢后者的原因是因为截断剩余部分的整数除法可能不是每个看着你的代码都很明显的事情.但是,模块化算法在所有编程语言中通常都是相同的.

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

@date.change(:year => 1960)
Run Code Online (Sandbox Code Playgroud)