2009-06-11 41 views
0

我需要做一個倒計時鐘,倒計時的日子,小時,分鐘和秒,這是我選擇的日期,使用jQuery或谷歌應用程序引擎(Python)。倒計時器使用jQuery或谷歌應用程序引擎?

我創建了一個使用JavaScript的計時器,但在這個我用了系統時間。

我需要使用服務器time.Can任何機構給我的想法,建立一個倒計時器使用服務器UTC時間。

+0

谷歌應用程序引擎是否必須是Python?如果您不介意Java App Engine的Java版本,我可以爲您提供幫助。 – 2009-06-15 22:20:34

回答

6

我創建了一個使用JavaScript的計時器,但在這個系統中,我使用了系統時間。

如果該JavaScript真正滿足您的需求,那麼該JavaScript代碼也可以很容易地變爲動態的。在代碼中,無論當前系統時間初始化,只需使用您選擇的語言(Python)插入服務器時間即可。換句話說:使用你的服務器語言(Python)來輸出腳本,就像它現在一樣,除了替換初始化當前時間的部分。

在PHP中,一些僞代碼(不知道的日期()構造函數的參數)可能看起來像,例如:

// my_countdown_script.php 
[..] 
var startTime = new Date(<?php echo time(); ?>); 
[..] 

然後,而不是包括你的JavaScript,您將得到包括PHP文件插入服務器時間像上面:

<script type="text/javascript" src="my_countdown_script.php"></script> 

的好處是:這將在支持你已經創建了JavaScript的瀏覽器。 (在一些更新的版本中,您的JavaScript可能包含一些初始化程序,允許您在將庫包含在HTML中後設置當前時間,這將允許實際的JavaScript庫是靜態的,因此可以通過瀏覽器。)

0

爲什麼不簡單地使用日期對象的UTC方法?

看到:https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date

所有本地時間的方法有UTC同行

編輯:這是爲了與他在JavaScript中現有的實現中。

如果你真的想確保你的服務器的時候,做一個XHR請求(東西),檢查日期頭

+0

不!先生。喬納森芬蘭我不想把系統時間作爲輸入,我想要服務器時間。 – 2009-06-11 05:05:17

3

您可以可靠地http://just-the-time.appspot.com/獲取服務器時間 - App Engine應用程序我做幫助堆棧溢出的提問者,實際上;-)。它的簡單代碼在http://code.google.com/p/just-the-time/處開放,我可以輕鬆地添加所需的功能(以您選擇的未來日期查詢,返回日期,小時,分鐘和秒鐘的頁面,以一些易於使用的格式) - 只是讓我知道!

4

良好的jQuery插件可以在這裏找到http://keith-wood.name/countdown.html

所有你需要做的,然後通過之前在頁面上設置一個變量,新的日期是從傳遞你的腳本語言PHP/asp.net初始化並更新_cal​​culatePeriods函數以獲取該變量而不是現在的變量。

<script type="text/javascript" src="js/jquery-1.3.2.js"></script> 
<script type="text/javascript" src="js/jquery.countdown.js"></script> 
<script type="text/javascript"> 
$(function() { 
    var servernow = new Date(<?php echo time(); ?>); 
    var austDay = new Date(); 
    austDay = new Date(austDay.getFullYear() + 1, 1 - 1, 26); 
    $('#defaultCountdown').countdown({until: austDay}); 
    $('#year').text(austDay.getFullYear()); 
}); 


</script> 

從JS/jquery.countdown.js

* Calculate the requested periods between now and the target time. 
    @param inst (object) the current settings for this instance 
    @param show (string[7]) flags indicating which periods are requested/required 
    @param now (Date) the current date and time 
    @return (number[7]) the current time periods (always positive) 
      by year, month, week, day, hour, minute, second */ 
_calculatePeriods: function(inst, show, now) { 
    // Find endpoints 
    inst._now = servernow; 

喬希

0

所以基本上你需要兩樣東西:

  1. 頁,使用服務器時間顯示倒計時時間。
  2. 客戶端更新時間。

渲染的東西你的時間服務器端是這樣的:

<span id="countdown" title="1245515631554">4 min. and 24 seconds</span> 

當標題是當前時間,你可以很容易地解析時間戳。你也可以解析文本,但這需要更復雜的代碼。

然後添加一些獲取時間和每秒更新文本的Javascript。設置獲取日期的超時,更新它並設置文本。

1

jQuery Timers是我以前用過的插件,發現非常好。

只需將兩個JavaScript變量設置爲倒計時的當前時間和目標時間,並使用jQuery計時器更新「剩餘時間」即可。如果你願意,你可以添加另一個時間來重新同步服務器和客戶端的時間 - 每隔一段時間 - 儘管這可能沒有必要。