Gli aiutanti di data/ora di Ruby sono utili ma ho trovato una discrepanza. Sembra che 12. mesi non sia uguale a 1.anno. Controlla 1.month e troverai che è uguale a 30.days e, naturalmente, 12 * 30.days = 360.days, a 5,25 giorni da una durata effettiva di un anno.In Ruby, 12. mesi! = 1.anno
Mi sono imbattuto in questo quando ho impostato l'accesso a determinati componenti del nostro sito web in base al numero di mesi concesso, come specificato dal cliente. Ho scoperto che un periodo di 36 mesi è scaduto un paio di settimane prima quando ho eseguito i miei test. La soluzione è stata qualcosa di simile:
def months_to_seconds(number_of_months)
((number_of_months.to_f/12) * 1.year).to_i.seconds
end
Questo restituisce il numero di secondi in qualsiasi frazione di un anno è rappresentato dai NUMBER_OF_MONTHS.
Poiché 1.anno è uguale in secondi a 365,25 giorni, perché si suppone che non abbiano 1.month restituire i secondi per 1/12 di un anno anziché 30 giorni?
Qualcuno ha incontrato prima questo? Qualcuno ha una soluzione migliore?
Non correlato, ma non è necessario che la chiamata 'to_f' in là; basta dividere per '12.0'. –