Rails仅以以下格式存储和检索时间:hh:mm:ss

时间:2016-05-03 12:03:24

标签: mysql ruby-on-rails activerecord time model

我生成了这样的模型:

2000-01-01T17:00:00Z

将模型保存到mysql工作正常。时间列填充为hh:mm:ss,这很好。但是当我从mysql中检索条目时,它以某种方式包含了2000-01-01的日期,例如:

my_model = MyModel.find(id)
print my_model.to_json#here time_first and time_second include date.

如何将时间列检索为hh:mm:ss?

我正在查询表条目:

{{1}}

2 个答案:

答案 0 :(得分:0)

在薄荷和小时内使用这个时间:

my_model.time_second.strftime("%H:%M %S %p")

答案 1 :(得分:0)

ruby​​中没有仅限时间的数据类型,因此即使您将其作为仅时间列保存到数据库中,它也将始终作为日期与时间进行解析(默认为2000年1月1日)。您可以定义属性读取器,将已解析的日期时间转换为您的首选格式,例如一个“HH:MM:SS”字符串或今天的时间:

class MyModel < ActiveRecord::Base

  # this will return the time formatted as a string:
  def time_first
    read_attribute(:time_first).strftime("%H:%M:%S")
  end

  # or
  # this will return the time as todays datetime object:
  def time_first
    Time.parse(read_attribute(:time_first).strftime("%H:%M:%S"))
  end

end

选择最适合您需求的方法之一。