2015-07-10 71 views
1

當我在瀏覽器中運行我的應用程序它顯示last saved just nowlast saved 2 mins ago但問題是可以b處從機器到機器。服務器和瀏覽器的時間差

比方說,我的機器當前時間是13:30等機時間13:34 .. 我想這difference..my應用程序是顯示在我的機器last saved just now和其他機器last saved 4 mins ago .. 我需要這個difference..any請提出建議?

修訂 我能得到瀏覽器時,如:

var d = new Date(); 
var hrs = d.getHours(); 
var min = d.getMinutes(); 
var sec = d.getSeconds(); 
if (hrs < 10) { 
    hrs = '0' + hrs; 
} 

if (min < 10) { 
    min = '0' + min; 
} 

if (sec < 10) { 
    sec = '0' + sec; 
} 

var system_date = hrs + ":" + min + ":" + sec; 

沒有得到任何現在的想法,我有獲取和如何這段時間?

+0

你有什麼迄今所做? – choz

+0

@choz請參閱更新的問題 – Dhara

+0

好吧,多數民衆贊成在JavaScript。當然,它會檢索客戶端時間。你在哪裏託管你的應用程序?我得到的是,你想獲得服務器時間,而不是 – choz

回答

0

解決方法是不要使用本地計算機日期。相反,只需從服務器返回指示自操作發生多久以來的時間範圍。時間跨度將基於服務器時間。

例如,如果你保存的東西在12:00服務器時間,但如果你使用的12:00服務器日期您的時鐘設置爲12:05,隨後並將其與當地的日期,12 :05,當它真的是瞬間的時候,它會說'5分鐘前'。

因此,要解決這個問題,來自服務器的時間跨度僅返回。它可能只是秒數。然後,您可以將其轉換爲「x分鐘前」或「x秒前」或「x小時前」。

或者,你可以計算服務器上的字符串,並返回給客戶端。

+0

我正在做同樣的事情..但它發生..當時間來自服務器,它比較系統時間'功能prettyDate(date_str){ \t var time_formats = [ \t var time =(''+ date_str).replace (/ - /克, 「/").replace(/[TZ]/g,」「), DT =新日期, 秒=((DT - 新日期(時間))/ 1000), 標記= '前', i = 0, 格式;'..still在不同的機器上顯示'剛纔'和'4分鐘前' – Dhara

+0

請勿使用新日期或從客戶端獲取日期的任何日期代碼 – NibblyPig

+0

或者,您可以從服務器返回當前的日期時間,並根據該時間計算邏輯,而不是使用用戶的本地日期時間。 – Dan

0

請嘗試以下操作。

<p> 
    Server current time at point of page rendering: 
    <input type="text" id="ServerTime" value="@DateTime.UtcNow.ToString("s")"/> 
</p> 

<p> 
    My object's date time: 
    <input type="text" id="EntityTime" value="@DateTime.UtcNow.AddSeconds(-30).ToString("s")" /> 
</p> 

<div id="Output"></div> 


<script> 

    var output = document.getElementById("Output"); 

    var serverTime = Date.parse(document.getElementById("ServerTime").value); 
    var entityTime = Date.parse(document.getElementById("EntityTime").value); 

    var staticDifference = (serverTime - entityTime)/1000; 

    output.innerHTML += "Static difference between two entities: " + staticDifference + " seconds.<br/>"; 

    var offset = serverTime - new Date().getTime(); 

    function calculateDateTime() { 
     var commonTime = new Date().getTime() + offset; 
     var calculatedDifference = (commonTime - entityTime)/1000; 
     output.innerHTML += "Posted " + calculatedDifference + " seconds ago.<br/>"; 
    } 

    setInterval(calculateDateTime, 3000); 

</script>