Подтвердить что ты не робот

Rails: получить время с даты и времени

Если у меня есть значение datetime около 1/10/2011 9:00:00, как я могу получить 9:00 утра от этого времени?

4b9b3361

Ответ 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: время"