2011-08-12 56 views
0

我正在寫一個計時器的web應用程序,它記錄開始時間和停止time.It使用前端javascript,jquery1.4.2python後端代碼。當一個開始按鈕被點擊,開始時間是保存在一個javascript變量中。當再次單擊按鈕時,停止時間保存在另一個變量中。這些值作爲隱藏參數傳遞給獲取起始值的python代碼,從djangorequest參數中停止值。javascript/python時間處理失敗,在鉻

我希望開始/停止參數的值是按以下格式

"07:16:03 PM" 

,以便它可以使用'%I:%M:%S %p'格式字符串進行解析。 我在mozilla firefox。但正確得到這個,當我用chrome,我只得到

"19:16:03" 

這會導致值錯誤,當我嘗試上面的格式字符串解析它。

import time 
... 
def process_input(request,...):  
    start_time=request.POST[u'timerstarted'] 
    ... 
    fmtstr='%I:%M:%S %p' 
    start_time_list = list(time.strptime(start_time,fmtstr)[3:6]) 

我試圖把alert('start time set as'+start_time)在JavaScript中查找值在頁面的hiddenfields設置

與Firefox,我得到了

start time set as08:03:09 PM 
stop time set as08:03:43 PM 

但鉻

start time set as20:04:21 
stop time set as20:04:32 

我JavaScript的知識,jquery是最小的。爲什麼腳本行爲不同?在這兩個瀏覽器?下面是JavaScript片段

$(document).ready(function(){ 
    var changeBtnStatus=function(){ 
    var timebtnvalue=$('#timebtn').attr("value"); 

    if (timebtnvalue =="start"){ 
     ...  
     var start_date=new Date(); 
     var str_time=start_date.toLocaleTimeString();  
     var timerstartedfield =$('#timerstarted');    
     timerstartedfield.attr("value",str_time);   
     alert('start time set as'+str_time); 

    } 
    else if (timebtnvalue=="stop"){ 
     ...    
     var stop_date=new Date(); 
     var stp_time=stop_date.toLocaleTimeString();   
     var timerstoppedfield =$('#timerstopped'); 
     timerstoppedfield.attr("value",stp_time);    
     alert('stop time set as'+stp_time);  
    } 
}; 
var timerBtnClicked=function(){ 
    ... 
    changeBtnStatus(); 
}; 

$('#timebtn').click(timerBtnClicked); 

... 
} 
); 

回答

1

你不希望在區域設置的時間字符串,通過toString方法你可以提供自己的格式,或者使用toUTCString()。

toLocaleTimeString特別用於顯示用戶習慣的時間,您希望以設定的格式顯示時間。

因此,而不是start_date.toLocaleTimeString(),您想要使用start_date。 toUTCString()。

+0

我想這會給我「星期五,2011年8月12日15:02:45 GMT」..我將不得不在Python中處理然後...謝謝..將嘗試 – jimgardener

+0

輸出將確實會改變,但它會在每個瀏覽器上保持不變。你可以使用toString來給它自己的格式,它會使解析更容易,因爲你可以決定發送什麼信息。 – TJHeuvel

1

爲什麼用JavaScript格式化時間並解析Python,甚至讓自己陷入混亂的不同區域?

嘗試使用Date.getTime insteam:

start_time = (new Date).getTime(); 
stop_time = (new Date).getTime(); 

這可以讓你的時間以毫秒爲單位,因爲時代,應該始終是穩定的。