For the complete documentation index, see llms.txt. This page is also available as Markdown.

TIME ZONE 설정하기

상황

우리의 서비스는 날짜와 시간을 기반으로 특정 이벤트가 발생해야한다. (예를 들면 토너먼트, 길드 전쟁) 하지만 Time.now 등과 같이 현재 시간을 찍어보면 이상한 시간이 찍힌다!!!

해결

UTC? Local?

이 문제는 시간을 가져오는 베이스가 한국이 아니라 UTC로 되어있었기 때문이다. 따라서 이 베이스를 한국으로 바꿔주면 된다.

# /config/application.rb

require "rails/all"

# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)

module Project
  class Application < Rails::Application
    # Initialize configuration defaults for originally generated Rails version.
    config.load_defaults 6.1

    # Configuration for the application, engines, and railties goes here.
    #
    # These settings can be overridden in specific environments using the files
    # in config/environments, which are processed later.
    #
    config.time_zone = "Seoul" # 원래 이 부분이 USA & CANADA 이렇게 되어있음
    # config.eager_load_paths << Rails.root.join("extras")
  end
end

BASE 를 설정해도 안되는데?! Time.zone 을 사용하자!

위 처럼 설정파일에서 time_zone 를 한국으로 설정해도 계속 시간이 UTC 로 나온다. 이유는 Time 클래스 그냥 사용하면 무조건 UTC 로 나오기 때문이다.

따라서 Time 를 사용할 때는 아래처럼 해줘야한다!

Last updated