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"> </span>
ZULU: <span id="ZULU"> </span>
IRAQ: <span id="IRAQ"> </span>
AFGN: <span id="AFGN"> </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()
서버의 시간은 단순히
많은 셰어 다루는 고통이 종류를 느꼈다. [Sharepoint Overflow] (http://www.sharepointoverflow.com/)에서 질문을 게시 해보십시오. – DOK