Ruby on rails 3 Rails:从datetime获取时间

Ruby on rails 3 Rails:从datetime获取时间,ruby-on-rails-3,datetime,Ruby On Rails 3,Datetime,如果我有一个日期时间值,比如2011年10月1日9:00:00,那么如何从该日期时间获取上午9:00 strftime会做到的 t = Time.now t.strftime("%I:%M%p") 此处的所有其他属性: 您可以使用以下代码从日期时间获取时间 datetime.strftime("%I:%M %P") 如果您只需要字符串输出,可以像Hitesh和Chris所说的那样使用strftime,但是如果您试图从DateTime的实例中获取Time的实例,可以执行以下操作: Time.p

如果我有一个日期时间值,比如2011年10月1日9:00:00,那么如何从该日期时间获取上午9:00

strftime会做到的

t = Time.now
t.strftime("%I:%M%p")
此处的所有其他属性:


您可以使用以下代码从日期时间获取时间

datetime.strftime("%I:%M %P")

如果您只需要字符串输出,可以像Hitesh和Chris所说的那样使用
strftime
,但是如果您试图从
DateTime
的实例中获取
Time
的实例,可以执行以下操作:

Time.parse(DateTime.now.to_s)
如果您想要解析一个字符串,如
“1/10/2011 9:00:00”
,并获取
时间的实例
,您可以使用相同的
解析
方法:

Time.parse("1/10/2011 9:00:00") #=> 2011-10-01 09:00:00 -0500
注意格式:Ruby在解析日期时使用非美国友好的d/m/y格式

要从该
time
实例输出一天中时间的字符串表示形式,请返回到
strftime


如果你需要从datetime开始搜索时间,希望这会把事情弄清楚。

:conditions => ["created_at::time > ?",  "08:30" ]

从带有翻译的

如果使用I18n,您可以轻松定义

本地化将时间对象传递给
I18n.l
的时间格式,或者(最好)使用Rails的
#l
助手。您可以通过传递:format选项来选择格式

# app/views/home/index.html.erb
<h1><%=t :hello_world %></h1>
<p><%= flash[:notice] %></p
<p><%= l Time.now, format: :short %></p>

# config/locales/pirate.yml
pirate:
  time:
    formats:
      short: "arrrround %H'ish"
#app/views/home/index.html.erb

我需要24小时的时间,例如晚上11点将返回
“23”
(不是11)


如果您可以理想地只提取一个没有关联日期的时间对象,那就太棒了。@Trip
Time
与一天的开始无关,但它是一个时间点。我同意《泰晤士报》的“一天中的时间”概念界面是有益的。@Trip实际上,这里有一个库似乎可以做到这一点(我没有玩过它,只是查看了自述):啊,很好推荐。不用再扔宝石,我只保存这样一个对象
time=object.time.hour.hours+object.time.minutes.minutes
。这给了我几秒钟的时间,我可以添加到日期时间中。有趣的是,我以前从未见过这种情况。数据库支持这种格式(
在::time创建的)
),还是Rails对其进行了一些处理以生成SQL语句?它只适用于MySQL或POSTgres等吗?@JoshuaPinter没有测试过,但很可能只适用于POSTgres(该
正在将
创建的
转换为
时间
# app/views/home/index.html.erb
<h1><%=t :hello_world %></h1>
<p><%= flash[:notice] %></p
<p><%= l Time.now, format: :short %></p>

# config/locales/pirate.yml
pirate:
  time:
    formats:
      short: "arrrround %H'ish"
Time.current.strftime("%H")
=> "18"