2016-09-12 3 views
0

내 응용 프로그램은 mysql 데이터베이스로 양식을 만들고 이벤트를 저장합니다. 나는 그와 비슷한 것을 사용한다.레일 레일 콘솔 날짜

나는 프랑스이고 나의 현지 시간은 GMT + 200이고 Time.now는 로컬 Time Machine을 사용한다. 내가 레일 콘솔에서

Event.all 

을 실행할 때 는하지만 문제가 레일 콘솔에서, 예를 들어 내가 볼 2016년 9월 12일 18시 30분 0초에서 이벤트를 만들 경우 :

#... <Event id: 5 ... start_date: 2016-09-12 16:30:00 ... 

내가 2 시간 지연을 가지고,하지만 난

e = Event.find 5 
e.start_date 

을 수행 할 때 나는 결과를

Mon, 12 Sep 2016 18:30:00 CEST +02:00 

좋은 시간. 나는 MySQL의 로그 및 내 요청이 정확한 날짜를 삽입 참조 : 나는 정확한 내 응용 프로그램이 완벽하게 작동

INSERT INTO `events` ... 2016-09-12 18:30:00' 

, 난 그냥 이해하고 싶다. UTC에 감사

설정의

편집 # 1 콘텐츠/application.rb

config.active_record.default_timezone = :local 
config.time_zone = 'Paris' 

답변

1

레일 기본적으로 모든 번이 기본 시간대에 데이터베이스의 모든 레코드를 절약 할 수 있도록. 하지만 당신은 이미 application.rb를 Paris로 변경 했으므로 콘솔에 정확한 시간이 표시됩니다. 그러나 데이터베이스의 경우 변경되지 않습니다.

당신은 사용할 수 있습니다

event = Event.new .... start_date: Time.now.in_time_zone ... 

이 방법 레일은 데이터베이스에 추가 할 때 application.rb에 TIME_ZONE를 사용하는 기본 TIME_ZONE를 건너 뜁니다.

+0

아니요. 내 데이터베이스를 확인하고 정확한 날짜가 있습니다. 처음부터 모든 방법을 사용할 때 문제가 있습니다. 콘솔은 event.start_date를 사용할 정확한 시간을 보여줍니다. – Alexandre

+0

그리고'config.active_record.default_timezone = : local'을 사용하여 데이터베이스의 모든 것을 변경합니다. 왜냐하면이 명령으로 데이터베이스에서 날짜를 가져올 때 레일스가 로컬 시간대를 사용하기 때문입니다. http://guides.rubyonrails.org/configuring.html – Alexandre

+0

그래, 내가 대답했을 때 아직 편집을 보지 못했습니다. 일반적으로 application.rb에서 '# config.time_zone ='중부 표준시 (미국 및 캐나다) '' – luissimo