2

이것은 개념적 질문이므로 여기에 코드 스 니펫이 없습니다.다른 시간대의 이벤트에 대한 데이터를 어떻게 저장해야합니까?

나는 이벤트 데이터베이스를 생성한다고합니다. 일부는 뉴욕에, 일부는 시카고에, 일부는 피닉스 등에 있습니다.

내 서버의 시간대가 뉴욕으로 설정되어 있습니다.

내 생각에이 모든 이벤트에 대해 UNIX 타임 스탬프를 만들 때 두 가지 옵션이 있습니다.

  1. 시간대를 고려하십시오. (즉, Chicago와 Pheonix에서 1 월 1 일 자정에 이벤트가 다른 타임 스탬프를 가짐). 그런 다음 날짜 형식을 텍스트 형식으로 표시하려고 할 때마다 시간대를 다시 고려해야합니다.

  2. 뉴욕에서 모든 사건이 일어난 것처럼 위장해서 말하십시오. 시카고와 Pheonix에서 1 월 1 일 자정에 이벤트가 동일한 타임 스탬프를 갖습니다. 내 서버가 New York으로 설정되었으므로 각 이벤트에 대해 시간대를 고려하지 않아도됩니다.

어떤 접근 방식이 더 좋습니까? 접근법 1은보다 "진정한"시간 소인을 제공하지만 접근법 2는 덜 복잡해 보이면서 동일한 결과를 제공합니다.

답변

0

이벤트 발생 시간을 기록하고 있거나 과거 이벤트 시간을 기록했다는 뜻이라면 paxdiablo의 대답은 정확합니다. 일반적으로 UTC로 충분합니다.경우에 따라 로컬 datetime + offset (일부 플랫폼에서는 "DateTimeOffset")을 저장할 수도 있지만 이는 데이터를 사용하는 대상에 따라 다릅니다.

그러나 향후 발생할 이벤트를 예약하고 싶으면 (특히 반복 일정 인 경우) UTC만으로는 충분하지 않습니다. 나는 이미 여러 번에 대해 서면으로 작성했습니다, 그래서 당신은 자세한 내용은이 기사를 읽으십시오 :

+0

당신의 대답은 @ paxdiablo의 것보다 내 상황과 관련이 있습니다. 왜냐하면 나는 미래의 사건들을 다루고 있기 때문입니다. 나는 미래에 변화하는 타임 존 경계를 다루는 방법에 대해 생각해 보지 못했습니다. –

2

은 모두 비교 및 ​​계산을위한 일관된 기준이되도록 UTC로 저장해야합니다. 그러면 일부 인간이 개입 할 때만 현지 시간으로 변환되어야합니다.

UTC를 사용하면 모든 날짜/시간과 함께 시간대를 가지고 다니고 여러 지역에서 복잡한 계산을 수행 할 필요가 없으므로 코드가 크게 단순 해집니다. 은 프로젝트에서을 한 번 수행하면 을 끝내기 전에 다시 :-)

즉, 사용자가 뉴욕 시간을 입력하면 가능한 한 빨리 UTC로 변환하십시오. 사용자에게 날짜/시간을 표시 할 때 가능한 한 늦게 현지 시간으로 다시 변경하십시오.

뉴욕 이벤트가 발생했을 때 현지 시간이 뭄바이의 어떤 사람에게 뉴욕에 있었는지 알릴 필요가 없다면 (예를 들어) 이벤트의 시간대. 을 수행 할 경우(a)이 필요하므로 시간대를 저장하십시오. 따라서 현지 시간과 이벤트가 발생한 현지 시간을 모두 얻을 수 있습니다.


(A) CJBS는 아래와 같이 의견에 몇 가지 좋은 예, 지적 :

  • 가 유용 비행기가 목적지에 도착 현지 시간을 알 수있는이되도록 택시를 주문할 수 있습니다. 또는 특정 시간에 만나기 위해 이벤트에 사람들과 준비하는
  • .
+0

을 시간대/UTC와 함께 오프셋 – CJBS

+0

@ CJBS, 이벤트의 시간대가 필요하면 그렇게 할 수 있습니다. 사람들이 일반적으로 _their_ 시간대를 기반으로 일어난 일이 언제인지를 알고 싶어하므로 필자는 결코 그것을 찾지 못했습니다. 그러나 언급할만한 가치가 있습니다. – paxdiablo

+1

공정한 포인트. 질문은 개념적이며 이벤트와 관련되어 있으므로 현지 시간대 형식 (최종 사용자가 아닌 이벤트)으로 표시되도록 이벤트의 시간대를 기록해야 할 수도 있고있을 수도 있습니다. 그냥 배려 요. 비행기를 고려해보십시오. 예를 들어 목적지에 도착한 현지 시간을 알고 있으면 택시를 주문할 수 있습니다. 이벤트 (이벤트가 진행되는 시간대의 특정 시간에 만날 수있는 사람과 이벤트를 준비하는 사람이 현재 어디에 있든 관계없이)와 동일한 이벤트가 적용될 수 있습니다. – CJBS

관련 문제