2012-03-07 3 views
4

일반적으로 Rails는 UTC 시간으로 데이터베이스에 모든 시간을 저장합니다. 표준 시간대를 다른 것으로 설정하면 데이터베이스에 저장하거나 데이터베이스에서 검색 할 때 해당 영역과 UTC간에 자동으로 변환됩니다.레일즈가 UTC로 시간대를 저장하는 이유는 무엇입니까?

이 접근법의 장점은 무엇입니까? 어떤 단점이 있습니까? 레일스가 다른 시간대를 사용할 수있는 방법이 있습니까?

나는 몇 가지 장점이 될 수있다 생각 :

  • UTC 계절 시간의 모호성이 데이터베이스에 일관된 일을 유지하면서
  • 당신은 다른 사용자에게 다른 시간대를 표시 할 수 있습니다 변경 제거

내가 생각할 수있는 유일한 단점은 모든 사용자가 실제로 동일한 시간대에있는 내부 앱의 경우이 차이로 인해 원시 SQL 쿼리 기반을 실행하기가 더 어려워집니다. d 현지 시간.

+0

'시간대를 다른 것으로 설정하는 경우'라고 말하면 ... .. 그게 무슨 뜻인지 모르겠습니까? 내 시간대를 어디에서 설정합니까? 서버에? 또는 클라이언트 측에서? – abbood

답변

7

이 질문은 약간 종교적으로 느껴지지만 내 개인적인 경험에 따라 답변 할 것입니다.

날짜는 항상 모호하지 않은 형식으로 저장하십시오. UTC로 날짜를 저장하는 것은 그 점에서 거의 표준입니다.

장점 :

  • 당신은 변환 할 필요없이 데이터베이스에 날짜 시간에 간단한 계산을 할 수 있습니다. 당신은 모든 변환해야

    • :
    • 당신은
    • 웹 응용 프로그램은 현지 시간을

    단점을 표시하는 자바 스크립트의 조금 사용할 수있는 프리젠 테이션 계층에서 날짜의 표시를 조정할 수 있습니다 시간이 일부 '지역'시간으로 표시됩니다.

  • 현지 시간 < -> UTC 변환은 작은 처리 벌금이 부과됩니다.

뭔가 다른 작업을 수행 할 수 있습니까? 아마 IMHO가 합리적인 디자인이었던 것과 싸우기에는 너무 많은 노력이 있었기 때문에 나는 시도한 적이 없었습니다.

'그냥 내 시간대 사용'이라는 의미에서 UTC를 사용하는 것이 합리적입니까? 예. 귀하의 서버는 캘리포니아 주, 뉴욕에있는 귀하의 사용자 일 수 있으며이 경우 귀하는 현지 시간을 결정합니다. 서버? 사용자입니까? 일주일 동안 런던에서 출장 중일 뿐인 마이크? 이 경우 어떤 시간대를 사용합니까?

+1

"항상 날짜를 모호하지 않은 형식으로 저장하십시오." 이것은 중요한 포인트입니다. 내 현지 시간대는 일광 절약 시간제를 사용합니다. 그것을 사용하여, 어떤 작업이 오전 1시 59 분에 시작되었고 시계가 뒤로 굴러 갔거나 어떤 근로자의 근무 시간이 실제로는 1 시간 더 길거나 길었 기 때문에 같은 날 오전 1:15에 끝났음을 기록 할 수 있습니다. UTC는 그런 문제가 없을 것입니다. –

관련 문제