ruby-on-rails - Ruby Rails Time.change 没有像我预期的那样工作......我已经检查了文档!

标签 ruby-on-rails ruby datetime date time

我有一个包含一个日期元素和 3 个时间元素的表单。这是因为 3 个时间事件将在一个日期发生,我不希望用户必须输入该日期 3 次。

在服务器端,我想将一个日期与 3 个时间结合起来得到 3 个日期时间对象。我在想我可以做类似的事情:

time_object.change(:day => date_object.day, :month => date_object.month, :year => date_object.year)

但这并没有奏效。这是我编写的一个简单测试,我希望它能工作:

  def before_validation
    logger.info("show_time = " + self.show_time.to_s)
    self.show_time.change(:year => 2012)
    self.show_time.change(:minute => 30)
    logger.info("show_time = " + self.show_time.to_s)
  end

这两个打印语句应该是不同的,但是它们是一样的。有谁知道合并时间和日期对象的最佳方法吗?

最佳答案

您需要分配它。如果你进入脚本/控制台:

>> t = Time.now
=> Thu Apr 09 21:03:25 +1000 2009
>> t.change(:year => 2012)
=> Mon Apr 09 21:03:25 +1000 2012
>> t
=> Thu Apr 09 21:03:25 +1000 2009
>> t = t.change(:year => 2012)
=> Mon Apr 09 21:03:25 +1000 2012
>> t
=> Mon Apr 09 21:03:25 +1000 2012

所以也许:

self.show_time = self.show_time.change(:year => 2012)

可以为你工作。我不知道我对该解决方案有何看法,但它应该有效。

关于ruby-on-rails - Ruby Rails Time.change 没有像我预期的那样工作......我已经检查了文档!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/733661/

相关文章:

ruby-on-rails - 如何在 ActiveRecord 语句中包含 coalesce()

ruby-on-rails - 在继承模型之上添加其他字段并公开所有父类(super class)和子类字段

ruby-on-rails - 无法使用everyize在ruby中运行cronjob

ruby-on-rails - 设置发货名称 - Authorize.net PayPal Express API - Ruby

javascript - 在 DATE 验证列中创建空值

C# 日期时间格式,包括日期/月/年而不是日

ruby-on-rails - RSolr::Error::Http: RSolr::Error::Http - 500 内部服务器错误

ruby - Ruby 中的 Array#sort 为什么这么快?

ruby - 计算两个日期之间的天数

java - java.time API 如何确定政府对区域规则的更改?