Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert UNIX Time to mm/dd/yy hh:mm (24 hour) in JavaScript

Tags:

javascript

I have been using

timeStamp = new Date(unixTime*1000);
document.write(timeStamp.toString());

And it will output for example:

Tue Jul 6 08:47:00 CDT 2010
//24 hour time

Screen real estate is prime, so I would like to take up less space with the date and output:

mm/dd/yy hh:mm
//also 24 hour time

like image 999
Mark Cheek Avatar asked Dec 07 '22 02:12

Mark Cheek


1 Answers

Just add an extra method to the Date object, so you can reuse it as much as you want. First, we need to define a helper function, String.padLeft:

String.prototype.padLeft = function (length, character) { 
    return new Array(length - this.length + 1).join(character || ' ') + this; 
};

After this, we define Date.toFormattedString:

Date.prototype.toFormattedString = function () {
    return [String(this.getMonth()+1).padLeft(2, '0'),
            String(this.getDate()).padLeft(2, '0'),
            String(this.getFullYear()).substr(2, 2)].join("/") + " " +
           [String(this.getHours()).padLeft(2, '0'),
            String(this.getMinutes()).padLeft(2, '0')].join(":");
};

Now you can simply use this method like any other method of the Date object:

var timeStamp = new Date(unixTime*1000);
document.write(timeStamp.toFormattedString());

But please bear in mind that this kind of formatting can be confusing. E.g., when issuing

new Date().toFormattedString()

the function returns 07/06/10 22:05 at the moment. For me, this is more like June 7th than July 6th.

EDIT: This only works if the year can be represented using a four-digit number. After December 31st, 9999, this will malfunction and you'll have to adjust the code.

like image 162
Marcel Korpel Avatar answered Dec 29 '22 00:12

Marcel Korpel