Если у меня есть значение datetime около 1/10/2011 9:00:00, как я могу получить 9:00 утра от этого времени?
Rails: получить время с даты и времени
Ответ 1
strftime сделает это.
t = Time.now
t.strftime("%I:%M%p")
Все остальные атрибуты здесь:
http://www.wetware.co.nz/blog/2009/07/rails-date-formats-strftime/
Ответ 2
DateTime.new(2011,10,1,9).to_s(:time) #=> "09:00"
DateTime.now.to_s(:time) #=> "11:58"
Из Время
Ответ 3
Если вам нужно искать по времени из datetime
:conditions => ["created_at::time > ?", "08:30" ]
Ответ 4
Вы получаете время с даты, используя следующий код
datetime.strftime("%I:%M %P")
Ответ 5
Если вам просто нужен вывод строки, вы можете сделать так, как Hitesh и Chris сказали с strftime
, но если вы пытаетесь получить экземпляр Time
из экземпляра DateTime
, вы можете сделать следующее
Time.parse(DateTime.now.to_s)
Если вы хотите проанализировать строку типа "1/10/2011 9:00:00"
и получить экземпляр Time
назад, вы можете использовать тот же метод parse
:
Time.parse("1/10/2011 9:00:00") #=> 2011-10-01 09:00:00 -0500
Обратите внимание на формат: Ruby использует формат d/m/y, не относящийся к США, при анализе дат.
Чтобы выводить строковое представление времени дня из этого экземпляра Time
, оно возвращается к strftime
.
Надеюсь, это прояснит ситуацию.
Ответ 6
С переводами
Если вы используете I18n, вы можете легко определить свои собственные временные форматы
локализовать формат времени, с которым вы передаете объект Time, в
I18n.l
или (желательно) использовать помощник Rails '#l
. Вы можете выбрать формат, передав опцию формата:# 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"
Обратитесь к @Chris Barretto, чтобы ответить за список параметров форматирования.
Ответ 7
Будет ли любое из этих преобразований работать в переменной?
Я пытался делать
но получил ошибку - "неопределенный метод" время "для субботы 01 января 08:30:00 UTC 2000: время"