Ruby on rails 如何将时间字段解析为小时、分钟和秒?

Ruby on rails 如何将时间字段解析为小时、分钟和秒?,ruby-on-rails,ruby,Ruby On Rails,Ruby,如何将我的start_at列解析为小时、分钟和秒的三个不同字段,而不是一个 注意:我想把它作为一列,而不是三列 这是我的密码: 表: class CreateTimers < ActiveRecord::Migration def change create_table :timers do |t| t.time :start_at t.timestamps end end end class CreateTimers 例如 start_

如何将我的
start_at
列解析为小时、分钟和秒的三个不同字段,而不是一个

注意:我想把它作为一列,而不是三列

这是我的密码:

表:

class CreateTimers < ActiveRecord::Migration
  def change
    create_table :timers do |t|
      t.time :start_at

      t.timestamps
    end
  end
end
class CreateTimers
表格:


'btn主span3'>
例如

start_at - 2011-04-26 04:14:56 UTC
小时:

start_at.strftime("%H") = "04" 
分钟:

start_at.strftime("%M") = "14"
几秒钟:

start_at.strftime("%S") = "26"

查看
strftime
at

如果您只想将时间分割为三个独立的输入,可以使用帮助器

否则使用
strftime
方法;查看更多帮助

start_at.strftime("%H %M %S")

更详细的文档位于:

您不需要说明时间值的格式。因为用户喜欢与众不同,如果你给他们一个自由格式的文本字段,你很可能会得到不同格式的数据,所以你必须灵活

您可以尝试使用DateTime的方法,它为格式提供了一些灵活性

DateTime.parse('2001-02-03T04:05:06+07:00')
#=> #<DateTime: 2001-02-03T04:05:06+07:00 ...>

DateTime.parse('20010203T040506+0700')
#=> #<DateTime: 2001-02-03T04:05:06+07:00 ...>

DateTime.parse('3rd Feb 2001 04:05:06 PM')
#=> #<DateTime: 2001-02-03T16:05:06+00:00 ...>
或:

需要“日期”
now=DateTime.now#=>#
现在.hour#=>7
now.min#=>52
now.sec#=>53

您可以在@surase提供的链接上找到strftime的详细描述。prasad
%Y
是年,
%Y
是两位数的年,
%m
是月,
%d
是天。这些与OP要求的小时、分钟和秒有什么关系?哦,妈的,对不起,我只是在编辑答案,不知道我为什么要写那个答案…现在展示一个示例,从一个字符串解析所有三个值,我们称之为好::-)我也给出了:P…现在happy@theTinMan:-)你有一些你正在研究的价值观样本吗?他们总是HH:MM:SS格式吗?OP需要时、分、秒,而不是年、月、日。@theTinMan:对不起,忽略了这个问题,更新了我的答案。谢谢你指出这一点。
DateTime.parse('2001-02-03T04:05:06+07:00')
#=> #<DateTime: 2001-02-03T04:05:06+07:00 ...>

DateTime.parse('20010203T040506+0700')
#=> #<DateTime: 2001-02-03T04:05:06+07:00 ...>

DateTime.parse('3rd Feb 2001 04:05:06 PM')
#=> #<DateTime: 2001-02-03T16:05:06+00:00 ...>
now = Time.now # => 2012-10-03 07:50:26 -0700
now.hour       # => 7
now.min        # => 50
now.sec        # => 26
require 'date'
now = DateTime.now # => #<DateTime: 2012-10-03T07:52:53-07:00 ((2456204j,53573s,622304000n),-25200s,2299161j)>
now.hour # => 7
now.min  # => 52
now.sec  # => 53