2013-02-03 23 views

回答

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 

我喜歡的原因,後者是因爲整數除法截斷餘可能不是某些東西這對每個看着你的代碼的人都是顯而易見的。但是,模塊化算法在所有編程語言中通常都是相同的。

請記住,如果您要更改日期,則需要使用相應的method

@date.change(:year => 1960) 
+0

任何辦法,使返回日期,而不是一個Fixnum? –

+0

你想要的月份/日期部分是什麼?和之前一樣? – sunnyrjuneja

+0

是的,這並不重要,我已經在上面運行了'.beginning_of_year'。我現在只對這一年感興趣。 –

2

乘以10.

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

之所以這樣工作(在Ruby和在C/C++,Python和可能許多其他語言)由10執行整數除法,然後是整數除法將總是截斷餘數。然而,如果你除以浮點數,情況就不會如此。

3

只是乘除整數:儘量​​

+0

哈!現在看起來如此明顯,但我只是假設那會讓我回到我開始的時候。所以我想/ 10然後再乘以10 ...然後我會得到這個十年......等等等等。忘了整數規則。 –

相關問題