Rubys Datum/Zeit Helfer sind nützlich, aber ich fand eine Diskrepanz. Es scheint, dass 12.Monat nicht gleich 1.Jahr ist. Überprüfen Sie 1.Monat und Sie werden feststellen, es ist gleich 30.days und natürlich 12 * 30.Tage = 360.Tage, 5,25 Tage kurz vor einem tatsächlichen Jahreslänge.In Ruby, 12.Monate! = 1.Jahr
Ich bin darauf gestoßen, als ich den Zugriff auf bestimmte Komponenten unserer Website basierend auf der Anzahl der Monate, die gewährt wurden, wie vom Kunden angegeben, festgelegt. Ich entdeckte, dass eine 36. Monatsfrist einige Wochen zu früh ablief, wenn ich meine Tests durchführte. Die Lösung war so etwas wie diese:
def months_to_seconds(number_of_months)
((number_of_months.to_f/12) * 1.year).to_i.seconds
end
Dies gibt die Anzahl der Sekunden in was auch immer Bruchteil eines Jahres durch die NUMBER_OF_MONTHS vertreten ist.
Seit 1.Jahr ist gleich in 365.25 Tage, warum glauben Sie, sie hatten nicht 1.Monat die Sekunden für 1/12 eines Jahres anstelle von 30 Tagen zurückgeben?
Hat jemand schon mal darüber gelaufen? Hat jemand eine bessere Lösung?
Unrelated, aber Sie brauchen nicht, dass 'to_f' dort zu nennen; dividiere einfach durch '12.0'. –