2015-01-29 4 views
1

내 ASP.NET 웹 사이트에는 타임 스탬프가있는 많은 페이지가 있습니다. 서버 시간에서 브라우저 시간까지 실시간으로 타임 스탬프를 변환하고 싶습니다. 그 목적을 위해 코드 숨김에서 클라이언트의 시간대 오프셋을 가져와야합니다.시간대 쿠키를 설정하기 전에 첫 페이지로드

JavaScript를 사용하여 모든 페이지의 <head>TimezoneOffset 쿠키를 설정하는 중입니다. 하지만 페이지가 처음로드 될 때 (그리고 이전에 쿠키가 설정되지 않은 경우) 작동하지 않습니다.

날짜를 서버에서 클라이언트 시간으로 변환하는 멋진 솔루션이 있습니까?

내가 볼 수있는 유일한 해결책은 Page_LoadTimezoneOffset 쿠키를 확인한 다음이 쿠키를 설정할 더미 페이지로 리디렉션하고 JS 리디렉션을 원래 페이지로 다시 사용하는 것입니다.하지만이 솔루션이 마음에 들지 않습니다.

답변

0

페이지로 이동하기 전에 사용자의 정보에 액세스 할 수 있다고 생각하지 않지만 머리에 쿠키를 확인하고 페이지를 다시로드 할 수 있습니다. 이 같은이 보일 것이다 무언가 : 당신이 (이 쿠키는 없기 때문에 물론 당신이 진짜 첫번째 요청을 무시해야합니다) 쿠키를 설정 한 후

var time = getCookie("timezoneoffset"); 
if(time !== undefined) { 
    //congrats, the timezone is set! 
} else { 
    //set the cookie here, then do this: 
    location.reload() 
} 
+0

설명 된 방법을 사용했지만 문제가 있습니다. 저는'UpdatePanel'을 사용하고 스크립트가 실행되기 전에 표시되어 사용자가 날짜를 깜박 거리게합니다. 어떻게 든 서버 측에서 날짜를 변환하여 재 설계하려고합니다. – Denis

+0

@Denis'window.onload'는 그것을 해결할 것입니다. – Travis

0

당신은 새로 고침을 수행하여 와이어트의 솔루션을 사용할 수 있습니다

var time = getCookie("timezoneoffset"); 
if(time != undefined) { 
    //congrats, the timezone is set! 
} else { 
    //set the cookie here, then do this .... 
    location.reload(); 
} 

이 변환 클라이언트 측을 고려해 보셨습니까? 더 나은 솔루션 일 수 있습니다 (그러나 앱 아키텍처에 많이 달려 있음).

이렇게하면 잠재 고객을 쿠키를 허용하는 사람으로 제한 할 수 있습니다 (단, 이는 다른 이야기입니다).

+0

이제 클라이언트 쪽을 변환했지만 문제가 있습니다 :'UpdatePanel'을 사용하여'ScriptManager.RegisterStartupScript'에 "replaceDates"스크립트를 등록해야하지만'RegisterStartupScript'로 등록 된 스크립트는 1-2 초 후에 실행됩니다 페이지가 표시되고 날짜가 UTC에서 현지 시간으로 변경되는 방법을 확인합니다. – Denis

+0

첫 번째 요청을 잊어 버린 경우 쿠키 클라이언트 측을 설정하고 페이지를 새로 고침 할 수 있습니다. –

+0

http://stackoverflow.com/questions/338482/can-you-determine-timezone-from-request-variables도 참조하십시오. 그러나이 작업을 수행하는 간단한 방법 (2)의 원칙은 동일합니다. 어려운 방법 (1) 재미를 많이 포함하는 IP 기반의 지리적 위치를 사용하는 것입니다 ... –

관련 문제