2011-08-12 2 views
0

시작 시간과 종료 시간을 기록하는 타이머 웹 앱을 작성 중입니다. 프런트 엔드에 javascript,jquery1.4.2, 백엔드 코드에 python을 사용합니다. 시작 버튼을 클릭하면 시작 시간이 자바 스크립트 변수에 저장됩니다. 버튼을 다시 클릭하면 중지 시간이 다른 변수에 저장됩니다.이 값은 숨겨진 매개 변수로 djangorequest 매개 변수에서 시작 값을 가져 오는 파이썬 코드로 전달됩니다.크롬에서 javascript/python 시간 처리가 실패합니다.

나는 시작/정지 매개 변수 값이 '%I:%M:%S %p' 형식 문자열을 사용하여 구문 분석 할 수

"07:16:03 PM" 

그래서 다음과 같은 형식이 될 것으로 기대합니다. 내가 chrome를 사용할 때 내가 mozilla firefox 나누었다에 올바르게를 얻고, 난 단지 내가 위의 형식 문자열을 구문 분석 할 때이 값 오류가 발생

"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]) 

내가 값이

파이어 폭스와 함께 페이지의 hiddenfields 설정있는 것을 발견하기 위해 자바 스크립트 alert('start time set as'+start_time)을 퍼팅 시도, 나는

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가 최소한입니다. 왜 스크립트가 다른 동작을합니까? 이 두 브라우저에서 y를? 아래는 자바 스크립트 당신은 당신이 당신의 자신의 형식을 제공하거나 toUTCString를 사용할 수있는 toString 메소드를 사용하여, 지역에 따라 시간의 문자열을 원하지 않는

$(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

스 니펫()이다.

toLocaleTimeString은 특히 사용자가 익숙해 진 시간을 표시하기위한 것으로, 원하는 형식으로 설정해야합니다.

그래서 start_date.toLocaleTimeString() 대신 start_date를 사용하려고합니다. toUTCString().

+0

나는 "Fri, 12 Aug 2011 15:02:45 GMT"를 줄 것입니다. 나는 python으로 처리해야합니다. 감사합니다. 시도해 보겠습니다. – jimgardener

+0

출력이 실제로 변경되지만, 변경 될 것입니다. 각 브라우저에서 일정해야합니다. toString을 사용하여 자신 만의 형식을 제공 할 수 있으며, 전송되는 정보를 결정할 수 있으므로 구문 분석이 쉬워집니다. – TJHeuvel

1

왜 JavaScript로 시간을 포맷하고 파이썬에서 구문 분석하고 심지어 다른 로케일의 혼란에 복종합니까?

Date.getTime insteam를 사용해보십시오 :

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

이 항상 안정되어야 신기원 이후 밀리 초 단위로 당신에게 시간을 가져옵니다.

관련 문제