Karthik
Karthik

Reputation: 1587

Date formating gives different results in Chrome than in other browsers?

I want to show the time in a readable format. So I am using the below js code. But the output is different in Chrome and IE. How do I change the code to give the same output across all the browsers ?

The output in IE : 12:46 am

In Chrome : 6:16 am

Time zone is : UTC +05:30

    var unReadableDate = "2016-01-25T00:46:00";
    var newDate = new Date(unReadableDate);
    //var timeZoneOffset = (new Date()).getTimezoneOffset();
    //newDate.setMinutes(newDate.getMinutes() - timeZoneOffset);
    alert(formatAMPM(newDate));

    //below function formats time in am and pm
    function formatAMPM(date) {
        var hours = date.getHours();
        var minutes = date.getMinutes();
        var ampm = hours >= 12 ? 'pm' : 'am';
        hours = hours % 12;
        hours = hours ? hours : 12; // the hour '0' should be '12'
        minutes = minutes < 10 ? '0' + minutes : minutes;
        var strTime = hours + ':' + minutes + ' ' + ampm;
        return strTime;
    }

Upvotes: 0

Views: 1233

Answers (3)

Nitin Garg
Nitin Garg

Reputation: 896

Can you please try replacing this

var unReadableDate = "2012-06-25T00:46:00.000Z"
    var newDate = new Date(unReadableDate);
    //var timeZoneOffset = (new Date()).getTimezoneOffset();
    //newDate.setMinutes(newDate.getMinutes() - timeZoneOffset);
    alert(formatAMPM(newDate));

    //below function formats time in am and pm
    function formatAMPM(date) {
        var hours = date.getHours();
        var minutes = date.getMinutes();
        var ampm = hours >= 12 ? 'pm' : 'am';
        hours = hours % 12;
        hours = hours ? hours : 12; // the hour '0' should be '12'
        minutes = minutes < 10 ? '0' + minutes : minutes;
        var strTime = hours + ':' + minutes + ' ' + ampm;
        return strTime;
    }

Upvotes: 1

potatopeelings
potatopeelings

Reputation: 41065

Your problem is that your date string being treated as a local time vs it being treated as UTC.

Just make it unambiguous by specifying the time zone. Change

var unReadableDate = "2016-01-25T00:46:00";

to

var unReadableDate = "2016-01-25T00:46:00Z";

Upvotes: 1

Nitin Garg
Nitin Garg

Reputation: 896

Converting a UTC format string to a date using Javascript Date constructor is not reliable. If you want to tackle timezone issues with date you should use moment.js. To understand more you can use below link.

Javascript Date issue

OR simple way to resolve the issue is pass individual arguments in the date instead of complete string. To understand more you can use below link

DateTime UTC

Upvotes: 1

Related Questions