2016-07-15 88 views
0

我正在創建必須顯示的頁面,UTC時間,我的當前時間和其他/國家/時區時間。我使用moment.min.js,moment-timezone.js,jquery.min.js - 我用 - http://www.digitoffee.com/programming/get-local-time-utc-using-moment-js/94/。請幫助我獲得另一個時區的時間。 - 這裏是的jsfiddle代碼 - https://jsfiddle.net/shejus/g63d2onw/10/ - 請幫助顯示另一個時區的時間

<html> 
    <head> 
     <title>DISPLAY TIME</title> 
    </head> 
    <body> 

     UTC 
     <br/> 
     <div id="divUTC"></div> 
     <br/> 
Your Local Time with respect to above UTC time 
     <br/> 
     <div id="divLocal"></div> 
     <br/> 
OTHER TIMEZONE TIME 
     <br/> 
     <div id="anyutctime"></div> 
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
     <script src="js/moment.min.js"></script> 
     <script> 
    $(function(){ 
    setInterval(function(){ 
    var divUtc = $('#divUTC'); 
    var divLocal = $('#divLocal'); 
    var anyutctime = $ ('#anyutctime'); 

    //put UTC time into divUTC 
    divUtc.text(moment.utc().format('YYYY-MM-DD HH:mm:ss'));  

    //get text from divUTC and conver to local timezone 
    var localTime = moment.utc(divUtc.text()).toDate(); 
    localTime = moment(localTime).format('YYYY-MM-DD HH:mm:ss'); 
    divLocal.text(localTime);   
    },1000); 

    //Display time of Another timezone 
    var anyTime = moment.utc(divUtc.text()).toDate(); 
    anyTime = moment.tz("America/Chicago").format('YYYY-MM-DD HH:mm:ss'); 
    anyutctime.text(anyTime);   
}); 
    </script> 
     <script src="js/moment-timezone.js"></script> 
    </body> 
</html> 

回答

2

存在幾個誤區:

  • 你撥弄沒有加載您指定的所有資源。

    • jQuery是不加載,因爲你提供了一個http URL和小提琴通過https加載。根據經驗,在jsFiddle上加載外部資源時指定protocol-relative URLs。 (以//開始網址,將任何http:https:停止)。

    • 您正在加載時刻之前的時刻。根據時區 - 時區文檔,您需要首先加載。瞬間時區紮根於全球時代。

  • 您沒有向時區提供任何時區數據。您可以手動加載數據使用moment.tz.add特定時間區(S),或者您可以使用預填充的一個數據文件,如moment-timezone-with-data-2010-2020.min.js。您可以使用此文件而不是moment-timezone.min.js文件(它包括腳本和數據)。

  • 您的HTML代碼段中有一個<body>標記。這在jsFiddle中不是必需的。

  • 您的某些腳本超出了setInterval調用的內部函數範圍。這導致第一次運行時divUtc未定義,並且未填充「其他時區時間」。仔細觀察右括號。

通過解決上述問題,您的代碼工作得很好。 Updated fiddle here

但是,您的腳本中仍然存在一些不必要的操作。通常,不需要使用div內容,字符串或Date對象作爲中間狀態持有者。事實上,因爲你沒有對時間對象做任何其他事情,所以你可以只創建一次,並在每次顯示之前改變狀態。 (如果你正在做進一步的操作,你可能首先要克隆它。)

The fully optimized jsFiddle is here,代碼如下:

$(function(){ 
    setInterval(function(){ 
    var divUtc = $('#divUTC'); 
    var divLocal = $('#divLocal'); 
    var divOther = $('#divOther'); 

    var format = 'YYYY-MM-DD HH:mm:ss'; 

    // get current local time 
    var now = moment(); 

    // display the local time 
    divLocal.text(now.format(format)); 

    // switch to utc mode and display 
    divUtc.text(moment.utc().format(format));  

    // switch to another time zone and display 
    divOther.text(now.tz('America/Chicago').format(format)); 
    },1000); 
}); 

最後,我就評論說,一般來說你應該嘗試在Stack Overflow上提出更具體的問題,而不是僅僅尋求一般的調試幫助。堆棧溢出主要是提供有用的可重用的問題和答案,這將有助於其他除了幫助你解決這個特定的問題。接下來的時間,請按照指導從堆棧溢出的幫助中心的以下文章:

+0

謝謝主席先生:)你幫我這個......上帝保佑你 –

相關問題