2010-11-28 2 views
0

SharePoint 마스터 페이지에 사용자 지정 헤더를 추가하고 있으며 현재 시간을 네 가지 다른 표준 시간대로 표시하고 싶습니다. 그러나 클라이언트의 시간대를 알 수 없거나 컴퓨터에서 정확한 시간을 알고 있기 때문에 클라이언트의 시간을 사용하고 싶지 않습니다. 다음과 같이ASP.NET에서 serverTime을 JScript로 네 가지 표준 시간대로 표시

이상적으로는, 시간이 표시되어야합니다

달라스 (UTC-6 DST 지원/w) 줄루어 : (UTC) 이라크 : (UTC + 3) 아프가니스탄 (UTC + 4.5)

내 문제는 내가 PHP 녀석 인만큼 ASP.NET에 대해 전혀 모른다는 것입니다. 그래서 올바른 시간대를 표시하기 위해 JavaScript가 계산을 수행하는 데 사용할 수있는 변수로 serverTime을 전달하는 방법이 필요합니다.

업데이트 :

나는 각각의 두 번째 변화에 따라 업데이트하는 시계가 필요합니다. 정적 시간이 아닌 살아있는 시간입니다.

업데이트 2 :

이 내가 어떤 제안을 사용하고 코드는?

<script runat="server"> 
    Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs) 
    End Sub 
    Public Function dtBase() As Double 
    Dim d1 As Date = New Date(1970, 1, 1) 
    Dim d2 As Date = Date.UtcNow 
    Dim ts As TimeSpan = d2 - d1 
    Return ts.TotalMilliseconds 
    End Function 
</script> 

<html> 
<head> 

<script type="text/javascript"> 

var serverTime=<%=dtBase%> 
var clientTime = new Date().getTime(); 
var milliDiff = serverTime - clientTime; 

function tO(){ return new Date(); } 

function tN(){ x=new Date(tO().getUTCFullYear(),tO().getUTCMonth(),tO().getUTCDate(),tO().getUTCHours(),tO().getUTCMinutes(),tO().getUTCSeconds()); x.setTime(x.getTime()+milliDiff); return x; } 

function lZ(x){ return (x>9)?x:'0'+x; } 

// CST time (subtract 5 hours from UTC time) 
// function dS(){ x=new Date(tN().getUTCFullYear(),tN().getUTCMonth(),tN().getUTCDate(),tN().getUTCHours(),tN().getUTCMinutes(),tN().getUTCSeconds()); x.setTime(x.getTime()-(5*3600000)); return x; } 
// CST time (subtract 6 hours from UTC time)   
function dS(){ x=new Date(tN().getUTCFullYear(),tN().getUTCMonth(),tN().getUTCDate(),tN().getUTCHours(),tN().getUTCMinutes(),tN().getUTCSeconds()); x.setTime(x.getTime()-(6*3600000)); return x; } 
function dallasT(){ document.getElementById('DALLAS').innerHTML=eval(dT); setTimeout('dallasT()',1000); } 
var dT="lZ(dS().getHours())+':'+lZ(dS().getMinutes())+':'+lZ(dS().getSeconds())"; 

// ZULU time (UTC time) 
function zS(){ x=new Date(tN().getUTCFullYear(),tN().getUTCMonth(),tN().getUTCDate(),tN().getUTCHours(),tN().getUTCMinutes(),tN().getUTCSeconds()); x.setTime(x.getTime()); return x; } 
function zuluT(){ document.getElementById('ZULU').innerHTML=eval(zT); setTimeout('zuluT()',1000); } 
var zT="lZ(zS().getHours())+':'+lZ(zS().getMinutes())+':'+lZ(zS().getSeconds())"; 

// IRAQ time (add 3 hours to UTC time) 
function iS(){ x=new Date(tN().getUTCFullYear(),tN().getUTCMonth(),tN().getUTCDate(),tN().getUTCHours(),tN().getUTCMinutes(),tN().getUTCSeconds()); x.setTime(x.getTime()+(3*3600000)); return x; } 
function iraqT(){ document.getElementById('IRAQ').innerHTML=eval(iT); setTimeout('iraqT()',1000); } 
var iT="lZ(iS().getHours())+':'+lZ(iS().getMinutes())+':'+lZ(iS().getSeconds())"; 

// AFGN time (add 4.5 hours to UTC time) 
function aS(){ x=new Date(tN().getUTCFullYear(),tN().getUTCMonth(),tN().getUTCDate(),tN().getUTCHours(),tN().getUTCMinutes(),tN().getUTCSeconds()); x.setTime(x.getTime()+(4.5*3600000)); return x; } 
function afgnT(){ document.getElementById('AFGN').innerHTML=eval(aT); setTimeout('afgnT()',1000); } 
var aT="lZ(aS().getHours())+':'+lZ(aS().getMinutes())+':'+lZ(aS().getSeconds())"; 

</script> 
</head> 
<body onload="zuluT();dallasT();iraqT();afgnT();"> 
<table>  
    <tr> 
    <td> 
     DALLAS: <span id="DALLAS">&nbsp;</span> 
     ZULU: <span id="ZULU">&nbsp;</span> 
     IRAQ: <span id="IRAQ">&nbsp;</span> 
     AFGN: <span id="AFGN">&nbsp;</span> 
    </td> 
    </tr> 
</table> 

3 UPDATE : 코드 일 경우

는 아직 모른다. 내 SharePoint 서버에서 코드 블록에 대한 페이지를 거부했습니다. 나는 코드 백을하는 법을 절대적으로 모르고있다. JS가 작동하지만 클라이언트의 시간이 꺼지면 잘못된 시간이 표시됩니다. 정말로 PHP에서 이것을 코딩 할 수 있으면 좋겠습니다. 일주일 전에 끝내야 겠어. ;)

UPDATE 4 :

이 업데이트는이 문제에 대한 답을 찾고 앞으로이 가로 질러 비틀 사람입니다. 위의 코드는 올바르게 작동하도록 업데이트되었습니다. 유일한 이유는 SharePoint가 기본적으로 코드를 허용하지 않기 때문에이를 사용하려면 web.config 파일을 수정해야합니다. web.config 파일은 대개 사이트의 루트 디렉토리에 있습니다. 그 파일 (XML) 안에는 태그가 있습니다. 그 안에는 누군가가 있어야합니다. 그 안에는 찾아야합니다. 해당 태그 안에 다음을 추가하십시오 :

<PageParserPath VirtualPath="/relative/path/to/your/file/here.aspx" CompilationMode="Always" AllowServerSideScript="true" /> 

나는 이것이 모두 도움이되기를 바랍니다. 당신은 이제 (라벨 제어 나에에 HiddenField 컨트롤의 값 속성의 텍스트 속성 값을 설정) 다음 자바 스크립트를 통해 액세스 할 수 있습니다

Now() 

서버의 시간은 단순히

+0

많은 셰어 다루는 고통이 종류를 느꼈다. [Sharepoint Overflow] (http://www.sharepointoverflow.com/)에서 질문을 게시 해보십시오. – DOK

답변

0

... OnLoad 이벤트. .NET의 WebService를 만들면 서버의 현재 시간 (JSON 또는 XML로)을 반환하고 Javascript를 통해 호출 할 수 있습니다.

0

JavaScript에서 왜 이렇게하고 싶은지 불분명합니다. 또는 JScript. 제발, 당신이 무엇이든, JScript을 사용하지 마십시오. JScript에는 많은 대기업들이 IE6에 갇혀 있기 때문에 Windows XP도 있습니다. (다른 출처 중 4 번째 의견 here을 참조하십시오.)

JavaScript는 클라이언트에서 실행되므로 클라이언트의 로컬 컴퓨터에서 시간을 처리하고 있습니다. 클라이언트의 시간대를 확인하는 것은 가능하지만 더 어렵습니다.

C# 또는 VB으로 작성된 ASP.Net 서버 측 코드를 사용하는 경우 자동으로 서버의 현지 시간이 사용됩니다.

현지 시간은 UTC + 해당 위치의 시간대 오프셋이며, 일광 절약 시간의 경우 오프셋 (일반적으로 +1)입니다 (적용되는 경우).

This page은 C# 또는 VB에서 UTC (또는 줄 루어) 시간을 얻는 방법을 설명합니다. 기본적으로,

DateTime.Now.ToUniversalTime(); 

그에게 시간을 추가하는 것입니다

DateTime.Now.AddHours(3); 

당신은 시간을 빼기 위해 음수 (-3)를 넣을 수 있습니다.

당신은 사람들은 UTC를 조정하기 위해 결합 할 수 있습니다 : 우리의

DateTime.Now.AddHours(3).ToUniversalTime(); 
+0

내 실수는 자바 스크립트를 의미하고 잘못된 약어를 ​​사용한다는 것을 깨닫지 못했습니다. JS 일 필요는 없습니다. 가장 쉬운 것처럼 보였습니다. 사이트 디렉토리 위의 서버에 아무것도 업로드 할 수있는 권한이 없습니다. 수정할 수있는 것은 default.master뿐입니다. – HasecBinUsr

+0

이 코드를 default.master에 추가 할 수 있어야합니다. – DOK

관련 문제