如何在Ruby on Rails中使用字符串声明日期

时间:2018-07-03 08:57:40

标签: ruby-on-rails ruby ruby-on-rails-4

我今天可以使用代码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 :(得分:4)

如果我正确理解了您要寻找的内容,那么您就在上个月的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

现在对比您想要的任何东西。

答案 1 :(得分:1)

@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

答案 2 :(得分:1)

您也可以执行类似的操作以获取每月的25号日期

 DateTime.current.last_month.beginning_of_month + 24.days
 => Mon, 25 Jun 2018 00:00:00 +0000