我正在向SharePoint主頁面添加自定義標題,並且想要在四個不同的時區中顯示當前時間。但是,我不想使用客戶端的時間,因爲無法知道客戶端將在什麼時區,或者他們的計算機上是否有正確的時間。使用JScript在四個不同的時區顯示來自ASP.NET的serverTime在四個不同的時區使用JScript
理想的是,如下的時間應顯示:
達拉斯:(UTC-6 W/DST支持)祖魯:(UTC)伊拉克:(UTC + 3)阿富汗:(UTC + 4.5)
我的問題是,我真的不知道任何有關ASP.NET,因爲我自己是一個PHP人。所以我需要一種方法將serverTime作爲JavaScript可用於執行計算的變量來傳遞,以顯示正確的時區。
UPDATE:
我需要的時鐘更新爲每一秒的變化。所以它是一個現場時間,而不是靜態時間。
更新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:
還是不知道,如果代碼工作。我的SharePoint服務器拒絕了代碼塊的頁面。我絕對沒有想法如何做代碼隱藏。 JS工作,但如果客戶的時間關閉,該站點顯示不正確的時間。真的希望我能用PHP編寫這個代碼。我會在一週前完成。 ;)
UPDATE 4:
此更新適用於任何人,在未來尋找答案的問題跨越這個絆倒。上面的代碼已更新爲正常工作。唯一的問題是SharePoint默認情況下不允許使用代碼,因此要啓用它,必須修改web.config文件。 web.config文件通常位於站點的根目錄中。在該文件(這是XML)中,你會發現一個標籤。其中有些內容,你應該找到,而且在裏面,你應該找到。在該標籤的內部,你想添加:
<PageParserPath VirtualPath="/relative/path/to/your/file/here.aspx" CompilationMode="Always" AllowServerSideScript="true" />
我希望這可以幫助你們。
我們很多人都覺得這種痛苦涉及的SharePoint。您也可以在[Sharepoint溢出](http://www.sharepointoverflow.com/)上嘗試發佈您的問題。 – DOK 2010-11-30 13:53:02