Как объявить дату со строкой в ​​Ruby on Rails - PullRequest
0 голосов
/ 03 июля 2018

Я могу напечатать дату сегодня, используя код DateTime.now.strftime("%d/%m/%Y %H:%M")

Но что если я захочу объединить некоторые из них со строкой, такой как DateTime.now.last_month.strftime("25/%m/%Y 00:00")

Возможно ли этого добиться?

Я хочу выбрать 25-й день прошлого месяца и использовать его в условии.

Это условие if DateTime.now.strftime("%d/%m/%Y %H:%M") > DateTime.now.last_month.strftime("25/%m/%Y 00:00") возвращает false (со строкой)

Пока это условие if if DateTime.now.strftime("%d/%m/%Y %H:%M") > DateTime.now.last_month.strftime("%d/%m/%Y %H:%M") возвращает true (без строки)

Ответы [ 3 ]

0 голосов
/ 03 июля 2018

@ mudasobwa ответ будет работать.

Но я думаю, что это можно сделать немного безопаснее от использования - 1.month с помощью .ago

Пример: ma = 1.month.ago

Тогда вы можете добавить этот кусок, который он написал: DateTime.new(ma.year, ma.month, 25, 0, 0, 0, "+00:00")

Также, когда вы можете сравнивать даты, лучше использовать UTC, чтобы не сравнивать два времени с разными часовыми поясами

Пример: if your_datetime.utc > ma.utc

0 голосов
/ 04 июля 2018

Вы также можете сделать что-то подобное для получения 25 числа месяца

 DateTime.current.last_month.beginning_of_month + 24.days
 => Mon, 25 Jun 2018 00:00:00 +0000
0 голосов
/ 03 июля 2018

Если я правильно понял, что вы ищете, вы после 25-го числа предыдущего месяца. Используйте Time#new:

ma = (DateTime.now - 1.month)
#⇒ Sun, 03 Jun 2018 11:07:24 +0200
DateTime.new(ma.year, ma.month, 25, 0, 0, 0, "+00:00")
#⇒ Mon, 25 Jun 2018 00:00:00 +0000

Теперь сравните все, что вы хотите с этим.

...