javascript/python time processing fails in chrome
Question: I am writing a timer web app,which records start time and stop time.It uses
`javascript,jquery1.4.2` for the front end and `python` for backend code.When
a start button is clicked ,start time is saved in a javascript variable.when
the button is clicked again, stop time is saved in another variable.These
values are passed as hidden parameters to the python code which gets the
start,stop values from `django`'s `request` parameter.

I expect the start/stop parameters values to be in the following format

    
    
    "07:16:03 PM"
    

so that it can be parsed using `'%I:%M:%S %p'`format string. I am getting this
correctly in `mozilla firefox`.But when I use `chrome`,I only get

    
    
    "19:16:03"
    

This causes value error when I try to parse it with the above format string.

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

I tried putting `alert('start time set as'+start_time)` in javascript to find
what values are set in the page's hiddenfields

With firefox ,I got

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

but with chrome

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

My knowledge of javascript,jquery is minimal.Why is the script behaving
differently in these two browsers? Below is the javascript snippet

    
    
    $(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);
    
    ...
    }
    );
    


Answer: You don't want the string of the time in locale, using the toString method you
can provide your own format, or use toUTCString().

toLocaleTimeString is especially meant to display the time as the user is used
to, you want it in a set format.

So instead of start_date.toLocaleTimeString(), you want to use
start_date.[toUTCString](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/toUTCString)().

