2017-02-22 5 views
1

Есть ли более короткий/более элегантный способ переформулировать это выражение, достигнув того же результата?Самый короткий способ получить последний день предыдущего месяца с Ruby

Date.today.last_month.end_of_month 
+2

Не совсем ... вы также можете попробовать 'Date.today.beginning_of_month - 1.day', но это не красивее. –

ответ

2

Вы хотите в конце месяца. За какой месяц? Последний. Последнее в отношении чего? Cегодня.

Итак, вы указали именно то, что ищете, и получили его. Что в этом нелепо?

Если вы хотите короче:

def end_of_last_month 
    Date.today.last_month.end_of_month 
end 
+1

Вы можете передать базовую дату в качестве аргумента со значением по умолчанию 'Date.today' (или' Date.current'). – Stefan

5

Тот, который вы уже написали короткий и достаточно элегантный еще вы можете попробовать эти

Date.today - Date.today.day 

или даже сокращенный вариант будет использовать переменную ограничить слова, которые вы можете попробовать:

(a=Date.today) - a.day 

Надеется, что это помогает

+2

Я думаю, что это хорошо, но оригинальное утверждение лучше читать и понимать. –

+1

да, вы правы – Mayank

Смежные вопросы