Аргумент даты Ruby вне диапазона - PullRequest
5 голосов
/ 01 сентября 2009

Я пытаюсь провести время с Time.local, который в моем коде является динамическим. В первое число каждого месяца я передаю значения Time.local (2009, 9, -1, 0). В PHP это будет время последнего дня предыдущего месяца. В ruby ​​я просто получаю «ArgumentError: аргумент вне диапазона».

Я использую неправильный метод или что-то? Благодарю.

1 Ответ

10 голосов
/ 01 сентября 2009

Вы должны использовать класс DateTime вместо Time. (Возможно, вам придется require 'date' и сначала установить гем activesupport.)

Он гораздо более универсален, чем Time и делает то, что вы хотите с DateTime.civil(2009,9 - 1,-1,0).

Передавая -1 для дня, вы получаете дату последнего дня месяца из второго аргумента, поэтому вы должны вычесть 1 из текущего месяца.

Если вы находитесь в Rails, вы можете просто сделать DateTime.civil(2009,9,1,0) - 1.day и получить то, что вы хотите, с более понятным кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...