Преобразуйте Время от одного часового пояса до другого в направляющих

Проблема состоит в том, что res.sendStatus наборы данный Код состояния HTTP ответа и отправляет свое строковое представление как орган по ответу (см. документация ). res.json установит заголовок ответа типа контента, но во время времени ответ будет уже отправлен клиенту.

Так вместо того, чтобы использовать res.sendStatus Вы могли просто использовать res.status:

response.status(201).json(JSON.parse(body));

102
задан Tom Lehman 6 September 2009 в 22:14
поделиться

3 ответа

Используйте метод in_time_zone класса DateTime

Loading development environment (Rails 2.3.2)
>> now = DateTime.now.utc
=> Sun, 06 Sep 2009 22:27:45 +0000
>> now.in_time_zone('Eastern Time (US & Canada)')
=> Sun, 06 Sep 2009 18:27:45 EDT -04:00
>> quit

Итак, для вашего конкретного примера

Annotation.last.created_at.in_time_zone('Eastern Time (US & Canada)')
187
ответ дан 24 November 2019 в 04:29
поделиться

Если вы добавите это в свой /config/application.rb

config.time_zone = 'Eastern Time (US & Canada)'

, тогда вы можете использовать ячейку

Annotation.last.created_at.in_time_zone

, чтобы получить время в указанном часовом поясе.

8
ответ дан 24 November 2019 в 04:29
поделиться

Установите часовой пояс на восточное время.

Вы можете установить ваш часовой пояс по умолчанию в config / environment.rb

config.time_zone = "Eastern Time (US & Canada)"

Теперь все записи, которые вы извлекаете, будут в этом часовом поясе. Если вам нужны другие часовые пояса, скажем, в зависимости от часового пояса пользователя, вы можете изменить его с помощью before_filter в вашем контроллере.

class ApplicationController < ActionController::Base

  before_filter :set_timezone

  def set_timezone
    Time.zone = current_user.time_zone
  end
end

Просто убедитесь, что вы сохраняете все свое время в базе данных как UTC, и все будет хорошо.

2
ответ дан 24 November 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: