如何在rails查询中给出时间格式?

时间:2014-03-19 13:18:49

标签: ruby-on-rails-4

Mysql表一行=>

id = 1

time =“21:00”// datatype => TIME

name =“xyz”

我正在提取数据

@person = @person.all
[#<persons id: 1, time: "2000-01-01 21:00:00, name: "xyz",  created_at: "2014-03-19 05:13:43", updated_at: "2014-03-19 05:13:43", creator_id: nil">

@person [0] .time#2000-01-01 21:00:00

它应该是“21:00”对吗?

为什么我得到“2000-01-01 21:00:00”输出任何建议?

4 个答案:

答案 0 :(得分:2)

从查询中获取数据后,您可以格式化为显示时间:

获取所有记录:

@person = @person.all

格式化为时间。

@person.first.time.strftime("%H:%M")

获取有关日期和时间格式click here

的更多信息

答案 1 :(得分:1)

@person[0].time返回该值的Ruby Time对象,其中包括日期。如果您将其直接输出到控制台或浏览器窗口,Ruby会将其转换为Time对象的默认字符串表示形式,该对象再次包含日期。

要格式化显示时间,您需要查看options for date/time formatting using Rails' internationalization API

答案 2 :(得分:0)

尝试使用strftime - 它允许您指定格式

即:

@person [0] .time.strftime(&#34;%m /%d /%Y%H:%M:%S&#34;)

答案 3 :(得分:0)

将数据类型从TIME更改为VARCHAR:

这不是好方法。我认为你应该考虑所有关于时间的情况,你有很多可能需要TIME对象到日期等其他操作。

如果在VARCHAR中存储小时和分钟,则无法执行TIME对象等任何操作。请考虑一下,如果您将来需要数据库中的小时或日期,但是您在数据库中只存储了小时和分钟,那么您没有存储(TIME对象)它,那么它将被视为糟糕的方法和失败。

你将TIME存储在小时和分钟的地方然后这是未来前景的好理由。

如果您存储时间对象,那么您将存储小时和分钟的其他信息。如果您需要日期,时间,小时,分钟甚至秒,那么您可以按时间格式计算。

如果您存储时间,则只有一个额外的工作时间格式,从性能的角度来看可以忽略不计。

以字符串格式存储TIME对象而不是小时和分钟总是更好。