Rails - Как изменить время созданного времени? - PullRequest
7 голосов
/ 27 февраля 2012

В моем контроллере у меня есть:

@konkurrencer = Rating.new(params[:kon])
@konkurrencer.save
@konkurrencer.konkurrencer.rating_score += params[:kon][:ratings].to_i
@konkurrencer.konkurrencer.ratings += 1
@konkurrencer.created_at = Time.now.strftime("%Y-%m-%d 00:00:00")
@konkurrencer.save

Когда я создаю новый элемент, столбец create_at:

2012-02-27 16:35:18

Я бы ожидал, что это будет:

2012-02-27 00:00:00

Ответы [ 2 ]

19 голосов
/ 27 февраля 2012

Ваша проблема в том, что strftime только форматирует время, но фактически не меняет время.

Так что когда вы делаете Time.now, это возвращает время.Strftime меняет только то, как оно представлено.

Если вы хотите изменить дату созданного_дата на "2012-02-27 00:00:00", просто передайте ее @koncurrencer.created_at

@koncurrencer.created_at = "2012-02-27 00:00:00"

Это должно сработать.

В ответ на ваш вопрос:

То, что вы делали, тогда должно работать нормально.На самом деле вы можете просто сказать:

@koncurrencer.created_at = Time.now  
@koncurrencer.save

, и это должно работать просто отлично.

Если вы хотите всегда иметь время в начале дня, вы можете использовать Date.todayвместо Time.now, поскольку он всегда возвращает компонент времени Date как «00:00:00»

Вот что вы хотите:

@koncurrencer.created_at = Date.today  
@koncurrencer.save

Это должно быть более понятно.

1 голос
/ 27 февраля 2012

Если вы хотите установить время всегда на «00:00:00», вы можете перейти к следующему:

t = Time.now
=> 2012-02-27 17:46:38 +0100

t2 = Time.parse("00:00:00", t)
=> 2012-02-27 00:00:00 +0100
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...