답변:
솔직히 이것은 여러 시간대에서 사용되는 웹 사이트를 가질 때 자주 발생하는 문제입니다. 전투를 극복 할 수있는 길은 길다. 잘못된 내용을 요약하면 여러 시간대를 처리하는 방법에 대한 많은 기여 요인이 있습니다.
대부분의 웹 사이트는이 문제를 해결하기 위해 두 가지 솔루션 중 하나를 선택합니다.
1) 날짜를 UTC로 데이터베이스에 저장하고 웹 사이트 사용자가 현재 시간대를 선택할 수 있도록 사용자 정의 설정을 허용하거나 geo-ip-lookup 마술을 수행하십시오. 세계 어디에서나 적절한 시간대를 찾은 다음 날짜를 표시 할 때마다 현지화에 필요한 함수를 호출해야합니다. 거의 모든 프로그래밍 언어에는 지정된 시간대를 사용하여 날짜를 표시하는 방법이 있습니다. 날짜를 삽입하는 사용자의 경우이 작업을 반대로 수행해야합니다. (로컬 시간이 걸리고 DB 저장을 위해 UTC로 다시 변환) 이것은 아마도 가장 일반적인 접근법 일 것입니다. 또한 "바퀴를 재발 명"하는 데 많은 시간을 절약 할 수 있습니다. 익명의 방문자가가는 한 ... A) EST / EDT (내장 된 함수 호출을 사용하여 적절하게 표시)를 사용하거나 B) Geo-IP-Lookup 항목으로 되돌리고 교육받은 추측에 따라 시간대를 선택할 수 있습니다. 날짜 / 시간을 표시하는 시간대를 항상 지정하는 것이 좋습니다. 즉 "12:00"이라고 말하지 마십시오. "12:00 EDT"라고 표시하십시오.
또는 2) 지금과 게시물이 작성된 시점의 차이를 표시하는 stackexchange의 모델 (및 기타 여러 가지)을 따릅니다. 즉, "x 게시일"대신 ... "x 시간 전"또는 "x 일 x 시간 전"등을 수행하거나 향후 날짜에 대해 ... "6 일 14 시간 후 ..." 많은 상황에서 빠르게 보편화되고 있지만 일정 유형의 일정에는 적합하지 않습니다.
물론 ... 당신은 여전히 두 종류의 하이브리드를 채택 할 수 있습니다 ... 한 단계 더 나아가서 날짜를 utc로 저장해야 할 수도 있지만 이벤트의 특정 시간대를 저장해야 할 수도 있습니다. 궁극적으로 결정은 당신의 것입니다.
문제는 다음과 같습니다. EU와 미국은 DST를 동시에 켜고 끄지 않습니다. 이번 3 월에는이 사건들간에 3 주간의 차이가있었습니다.
이 기간 동안 어떻게됩니까? 매일 같은 시간에 이벤트가 있고 미국에 거주하고 있으므로 미국 DST를 사용하여 시간을 조정한다고 가정 해 봅시다.
Day (2001) United States Europe United Kingdom Global Time delta
March 5th EST 1500 CET 2100 GMT 2000 GMT 2000 +23h
March 6th EDT 1500 CET 2000 GMT 1900 GMT 1900 +24h
March 7th EDT 1500 CET 2000 GMT 1900 GMT 1900 +24h
..............................................................................
March 26th EDT 1500 CET 2000 GMT 1900 GMT 1900 +24h
March 27th EDT 1500 CEST 2100 BST 2000 GMT 1900 +24h
모든 가능성을 분석해 봅시다 :
글로벌 시간대로 시간을 표시하고 UTC 라고 부르면 올바른 일처럼 느껴지고, 다른 UTC 시간 (어제 오후 8시, 오늘 오후 7시)을 보게 될 미국 고객을 혼란스럽게 할 것입니다. 동일한 벽시계 시간 (어제 오후 3시, 오늘 오후 3시)과 EU 기준 고객 은 게시 된 시간 시계 변경 을 보지 못하지만 벽 시계 이벤트 시간을 변경해야합니다.
글로벌 시간대로 시간을 표시하고 GMT 라고하면 미국 고객을 혼란스럽게 할뿐만 아니라 GMT에서 BST로 전환하는 영국 고객을 혼동하게됩니다. EDT 1500과 EST 1400이 같은 순간 이라는 것을 이해하는 것은 반 직관적입니다 . 이제 BST / GMT로 변환합니다 (사이트의 어느 부분에서나 BST 시간을 표시하지 않을 추가 문제가 있음).
EU 시간대로 시간대를 표시하면 ( GMT / UTC 혼동을 피하기 위해 CET / CEST 를 사용했습니다 ), 이벤트 시간이 앞뒤로 두 번 전환 되어도 벽이없는 미국 고객에게는 혼동 될 것입니다. 시계 시간 자체가 변경됩니다. 미국 고객은 첫 번째 스위치를 준비 할 수 있지만 (같은 날 벽시계를 변경해야하는 경우) 후자는 놀라게됩니다.
미국 시간대 (예 : EST / EDT )에 시간대를 표시하면 위에서 설명한 정확한 상황이 표시되지만 미러링됩니다.
이것은 절망적 인 상황처럼 보입니다! 4 년 동안이 리그 마롤 (1 년에 두 번)을 겪은 후에이 문제를 해결 한 방법은 다음과 같습니다. "시간대를 구성하십시오."
위의 상황과 정확히 일치하므로 "NYT"(뉴욕 시간대)를 구성하여 "1500 NYT"를 작성하여 "뉴욕이 사용하는 시간대에 관계없이 오후 3시"를 의미 할 수 있습니다.
이것은 사용자가 DST waltzer가 발생하고 있음을 알고있는 한, 뉴욕의 시간을 확인하기 위해 google " time in new York " 으로 자신의 시간대로 전환하는 매우 간단한 방법을 가지고 있다는 이점이 있습니다. 그런 다음 거기서부터 해결하십시오. time.is/15:00_in_New_York 와 같은 멋진 위치 정보 기반 서비스를 이용할 수도 있습니다.
당신이 동안, 그 주 수 time.is에서 시간대의 약어 이름을 사용하는 사람들이 꽤 모두에 대해 혼동을 위해 내가 자신을 당신을하지 촉구 : EST는 동부 서머 타임과 같은 시간이 ‽
사람들에게 도움이되도록 적절한 시간 변환 웹 서비스에 연결하여 짧은 블러를 사용하여 DST에 대해 사용자에게 알릴 수 있습니다. 이상적으로 모든 타임 스탬프에는 현지 시간으로 변환 할 수있는 옵션이 있어야합니다.
모두가 말하고 행했을 때, 당신은 내가 항상 방에서 코끼리를 무시하고 있다는 것을 깨달아야합니다. 그것은 이미 구현 한 "카운트 다운"솔루션입니다. "1 일 2 시간 45 분 47 초에"혼동되지 않습니다 (정확성 이 필요하지 않다면 다시 생각하고 싶을 수도 있습니다 ).
물론, 내 경험에서 나는 위의 사진 놀라운 혼란을 처리했다, 그래서 나는 정적 텍스트 아니었다 아무것도의 고급 스러움이 없었어요 (그 단지의 시작 그것의! 어떻게 DST의 뒤쪽을 수행 남부 emisphere, 어떻습니까?) 그러나 사용 사례의 경우 혼동 가능성이 가장 적은 솔루션처럼 들립니다. 매년 "23 시간"및 "25 시간"이벤트에 대해 묻는 두 개의 스레드가있을 수 있지만, 일반적으로 "24 시간"에서 카운트 다운됩니다.