2015-07-10 38 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>