2011-04-14 8 views
6

현재 사용자가 부재 중 날짜 및 시간을 다른 사용자에게 제공 할 수 있도록 웹 사이트에 시스템과 같은 부재 중 알림을 추가하고 있습니다. 사용자 정보가있을 때 백업으로 사용합니다.웹 사이트에서 사용자의 현지 시간에서 UTC로 날짜/시간 변환

내가 가진 문제는 사용자의 현지 시간을 UTC로 변환하는 것입니다. UTC를 사용자에게 제공하고 클라이언트 (js)가 로컬 시간과 시간을 변환하도록하여이 문제를 해결하는 다른 게시물을 보았습니다. 그러나 사용자의 시간대 기본 설정에 따라 서버 측 날짜를 변환하는 데 사용할 수있는 적절한 시스템에 액세스 할 수 있습니다.

내 질문은 : 사용자의 로컬 시간 (예 : 로그인 한 위치에 관계없이 미국 시간)을 제공 할 수 있도록 서버 측 변환을 사용해야합니까, 아니면 사용해야합니까? 클라이언트 측 변환?

아무도이 경험이 있습니까? 각 방법의 덜 명확한 장점/단점은 무엇입니까?

+0

일부 코드 예제가 필요하면 기술 목록을 작성하십시오. 그것이 PHP가 아니면 않는 한 나는 그것을 제공 할 수 있습니다. –

답변

11

UTC로 모든 것을 저장하는 것은 매우 좋은 아이디어이며, 나는 그것에 충실 할 것을 권한다.

사용할 수있는 방법이 거의 없습니다. 나는 당신이 사용자 프로필을 가지고 있다고 가정합니다. 사용자는 선호하는 시간대를 선택하고이 정보를 사용하여 모든 것을 표시 할 수 있습니다. 뿐만 아니라 모든 사용자 입력을 적절하게 처리합니다 (서버 측에서 변환, 시간대를 선호하는 것으로 가정).

또 다른 방법은 실제로 사용자의 시간대 오프셋을 Date.getTimeZoneOffset()을 통해 가져 와서 서버로 (예 : 숨겨진 양식 필드 또는 Ajax를 통해) 보내는 것입니다. 당신이 그것을 알 때, 사용자의 시간에 모든 것을 보여주는 것은 케이크 한 조각 일 것입니다. 이 경우 클라이언트에서 날짜/시간을 변환하여 UTC로 보내거나 숨겨진 양식 필드를 시간대 오프셋과 함께 사용하려고 할 수 있습니다.

두 경우 모두 서버 측에서 데이터베이스 날짜 변환을 처리합니다. 이것이 내 경험에서 얻은 최선의 접근 방법입니다. 내가 말하고자하는 것은 시간대를 변환하는 것만 제외하면 정확한 형식으로 날짜/시간을 표시하는 것입니다 (즉, AcceptLanguage 헤더 값에 따라 다름).

+1

나는 사용자가 자신의 시간대를 지정할 수있는 옵션이기도하지만, 현재 브라우저의 시간대를 기본값으로 지정할 수있는 옵션이라고 지적했다. 이 방법은 사용자가 시간대를 제공하지 않으면 올바른 시간이 표시됩니다. 그러나 여전히 유연성을 사용할 수 있습니다. 그러나 처음에는 현재 브라우저의 시간 오프셋을 사용하는 것으로 알고 있습니다. :) 감사! –

0

사용자가 프로필에서 올바른 시간을 설정한다고 생각하는지 여부와 클라이언트의 컴퓨터가 설정된 시간대로 설정된 클라이언트가 있다고 생각하는지 여부에 따라 문제가 발생합니다.

홈 시간 설정이 프로필의 선택적 시간대 (많은 사용자가 올바르게 설정되지 않는 설정) 인 경우 클라이언트 측 시간을 사용해야합니다.

많은 사용자가 원하는 시간대 (예 : 호텔 컴퓨터에서 액세스하는 경우)로 설정되지 않은 컴퓨터에서 시스템에 액세스하는 것으로 예상되는 경우 서버에서 시간을 변환해야합니다.

이 두 가지가 모두 적용되는 경우, 그렇지 않은 경우 저주를받습니다.

두 솔루션보다 둘 다 적용되지 않을 경우 동등하고 만족스러운 결과를 얻을 수 있습니다.

아무리 선택해도 혼동을 없애기 위해 표시 할 때 타임 스탬프를 추가하는 것이 좋습니다.

관련 문제