Tutorial :Convert a Unix timestamp to time in JavaScript



Question:

I am storing time in a MySQL database as a Unix timestamp and that gets sent to some JavaScript code. How would I get just the time out of it?

For example, in HH/MM/SS format.


Solution:1

// Create a new JavaScript Date object based on the timestamp  // multiplied by 1000 so that the argument is in milliseconds, not seconds.  var date = new Date(unix_timestamp*1000);  // Hours part from the timestamp  var hours = date.getHours();  // Minutes part from the timestamp  var minutes = "0" + date.getMinutes();  // Seconds part from the timestamp  var seconds = "0" + date.getSeconds();    // Will display time in 10:30:23 format  var formattedTime = hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);  

For more information regarding the Date object, please refer to MDN or the ECMAScript 5 specification.


Solution:2

function timeConverter(UNIX_timestamp){    var a = new Date(UNIX_timestamp * 1000);    var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];    var year = a.getFullYear();    var month = months[a.getMonth()];    var date = a.getDate();    var hour = a.getHours();    var min = a.getMinutes();    var sec = a.getSeconds();    var time = date + ' ' + month + ' ' + year + ' ' + hour + ':' + min + ':' + sec ;    return time;  }  


Solution:3

JavaScript works in milliseconds, so you'll first have to convert the UNIX timestamp from seconds to milliseconds.

var date = new Date(UNIX_Timestamp * 1000);  // Manipulate JavaScript Date object here...  


Solution:4

I'm partial to Jacob Wright's Date.format() library, which implements JavaScript date formatting in the style of PHP's date() function.

new Date(unix_timestamp * 1000).format('h:i:s')  


Solution:5

Here is the shortest one-liner solution to format seconds as hh:mm:ss:

/**   * Convert seconds to time string (hh:mm:ss).   *   * @param Number s   *   * @return String   */  function time(s) {      return new Date(s * 1e3).toISOString().slice(-13, -5);  }    console.log( time(12345) );  // "03:25:45"  

Method Date.prototype.toISOString() returns time in simplified extended ISO 8601 format, which is always 24 or 27 characters long (i.e. YYYY-MM-DDTHH:mm:ss.sssZ or ±YYYYYY-MM-DDTHH:mm:ss.sssZ respectively). The timezone is always zero UTC offset.

N.B.: This solution does not require any third-party libraries and is supported in all modern browsers and JavaScript engines.


Solution:6

I'd think about using a library like momentjs.com, that makes this really simple:

Based on a Unix timestamp:

var timestamp = moment.unix(1293683278);  console.log( timestamp.format("HH/mm/ss") );  

Based on a MySQL date string:

var now = moment("2010-10-10 12:03:15");  console.log( now.format("HH/mm/ss") );  


Solution:7

UNIX timestamp is number of seconds since 00:00:00 UTC on January 1, 1970 (according to Wikipedia).

Argument of Date object in Javascript is number of miliseconds since 00:00:00 UTC on January 1, 1970 (according to W3Schools Javascript documentation).

See code below for example:

    function tm(unix_tm) {          var dt = new Date(unix_tm*1000);          document.writeln(dt.getHours() + '/' + dt.getMinutes() + '/' + dt.getSeconds() + ' -- ' + dt + '<br>');        }    tm(60);  tm(86400);  

gives:

1/1/0 -- Thu Jan 01 1970 01:01:00 GMT+0100 (Central European Standard Time)  1/0/0 -- Fri Jan 02 1970 01:00:00 GMT+0100 (Central European Standard Time)  


Solution:8

Using Moment.js, you can get time and date like this:

var dateTimeString = moment(1439198499).format("DD-MM-YYYY HH:mm:ss");  

And you can get only time using this:

var timeString = moment(1439198499).format("HH:mm:ss");  


Solution:9

The problem with the aforementioned solutions is, that if hour, minute or second, has only one digit (i.e. 0-9), the time would be wrong, e.g. it could be 2:3:9, but it should rather be 02:03:09.

According to this page it seems to be a better solution to use Date's "toLocaleTimeString" method.


Solution:10

Another way - from an ISO 8601 date.

var timestamp = 1293683278;  var date = new Date(timestamp*1000);  var iso = date.toISOString().match(/(\d{2}:\d{2}:\d{2})/)  alert(iso[1]);  


Solution:11

In moment you must use unix timestamp:

var dateTimeString = moment.unix(1466760005).format("DD-MM-YYYY HH:mm:ss");  


Solution:12

The modern solution that doesn't need a 40 KB library:

Intl.DateTimeFormat is the non-culturally imperialistic way to format a date/time.

// Setup once  var options = {      //weekday: 'long',      //month: 'short',      //year: 'numeric',      //day: 'numeric',      hour: 'numeric',      minute: 'numeric',      second: 'numeric'  },  intlDate = new Intl.DateTimeFormat( undefined, options );    // Reusable formatter  var timeStamp = 1412743273;  console.log( intlDate.format( new Date( 1000 * timeStamp ) ) );  


Solution:13

Based on @shomrat's answer, here is a snippet that automatically writes datetime like this:

today, 11:23  

or

yersterday, 11:23  

or (if different but same year than today)

6 Nov, 11:23  

or (if another year than today)

6 Nov 2016, 11:23  

function timeConverter(t) {          var a = new Date(t * 1000);      var today = new Date();      var yesterday = new Date(Date.now() - 86400000);      var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];      var year = a.getFullYear();      var month = months[a.getMonth()];      var date = a.getDate();      var hour = a.getHours();      var min = a.getMinutes();      if (a.setHours(0,0,0,0) == today.setHours(0,0,0,0))          return 'today, ' + hour + ':' + min;      else if (a.setHours(0,0,0,0) == yesterday.setHours(0,0,0,0))          return 'yesterday, ' + hour + ':' + min;      else if (year == today.getFullYear())          return date + ' ' + month + ', ' + hour + ':' + min;      else          return date + ' ' + month + ' ' + year + ', ' + hour + ':' + min;  }  


Solution:14

// Format value as two digits 0 => 00, 1 => 01  function twoDigits(value) {     if(value < 10) {      return '0' + value;     }     return value;  }    var date = new Date(unix_timestamp*1000);  // display in format HH:MM:SS  var formattedTime = twoDigits(date.getHours())         + ':' + twoDigits(date.getMinutes())         + ':' + twoDigits(date.getSeconds());  


Solution:15

Pay attention to the zero problem with some of the answers. For example, the timestamp 1439329773 would be mistakenly converted to 12/08/2015 0:49.

I would suggest on using the following to overcome this issue:

var timestamp = 1439329773; // replace your timestamp  var date = new Date(timestamp * 1000);  var formattedDate = ('0' + date.getDate()).slice(-2) + '/' + ('0' + (date.getMonth() + 1)).slice(-2) + '/' + date.getFullYear() + ' ' + ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2);  console.log(formattedDate);  

Now results in:

12/08/2015 00:49  


Solution:16

function getTIMESTAMP() {        var date = new Date();        var year = date.getFullYear();        var month = ("0"+(date.getMonth()+1)).substr(-2);        var day = ("0"+date.getDate()).substr(-2);        var hour = ("0"+date.getHours()).substr(-2);        var minutes = ("0"+date.getMinutes()).substr(-2);        var seconds = ("0"+date.getSeconds()).substr(-2);          return year+"-"+month+"-"+day+" "+hour+":"+minutes+":"+seconds;      }  //2016-01-14 02:40:01  


Solution:17

See Date/Epoch Converter.

You need to ParseInt, otherwise it wouldn't work:


if (!window.a)      window.a = new Date();    var mEpoch = parseInt(UNIX_timestamp);    if (mEpoch < 10000000000)      mEpoch *= 1000;    ------  a.setTime(mEpoch);  var year = a.getFullYear();  ...  return time;  


Solution:18

You can use the following function to convert your timestamp to HH:MM:SS format :

var convertTime = function(timestamp, separator) {      var pad = function(input) {return input < 10 ? "0" + input : input;};      var date = timestamp ? new Date(timestamp * 1000) : new Date();      return [          pad(date.getHours()),          pad(date.getMinutes()),          pad(date.getSeconds())      ].join(typeof separator !== 'undefined' ?  separator : ':' );  }  

Without passing a separator, it uses : as the (default) separator :

time = convertTime(1061351153); // --> OUTPUT = 05:45:53  

If you want to use / as a separator, just pass it as the second parameter:

time = convertTime(920535115, '/'); // --> OUTPUT = 09/11/55  

Demo

var convertTime = function(timestamp, separator) {      var pad = function(input) {return input < 10 ? "0" + input : input;};      var date = timestamp ? new Date(timestamp * 1000) : new Date();      return [          pad(date.getHours()),          pad(date.getMinutes()),          pad(date.getSeconds())      ].join(typeof separator !== 'undefined' ?  separator : ':' );  }    document.body.innerHTML = '<pre>' + JSON.stringify({      920535115 : convertTime(920535115, '/'),      1061351153 : convertTime(1061351153, ':'),      1435651350 : convertTime(1435651350, '-'),      1487938926 : convertTime(1487938926),      1555135551 : convertTime(1555135551, '.')  }, null, '\t') +  '</pre>';

See also this Fiddle.


Solution:19

 function getDateTimeFromTimestamp(unixTimeStamp) {      var date = new Date(unixTimeStamp);      return ('0' + date.getDate()).slice(-2) + '/' + ('0' + (date.getMonth() + 1)).slice(-2) + '/' + date.getFullYear() + ' ' + ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2);    }    var myTime = getDateTimeFromTimestamp(1435986900000);  console.log(myTime); // output 01/05/2000 11:00  


Solution:20

function timeConverter(UNIX_timestamp){   var a = new Date(UNIX_timestamp*1000);       var hour = a.getUTCHours();       var min = a.getUTCMinutes();       var sec = a.getUTCSeconds();       var time = hour+':'+min+':'+sec ;       return time;   }  


Solution:21

If you want to convert Unix time duration to real hours, minutes, and seconds, you could use the following code:

var hours = Math.floor(timestamp / 60 / 60);  var minutes = Math.floor((timestamp - hours * 60 * 60) / 60);  var seconds = Math.floor(timestamp - hours * 60 * 60 - minutes * 60 );  var duration = hours + ':' + minutes + ':' + seconds;  


Solution:22

var event = new Date(1504095567183).toLocaleDateString("en-US")  // expected output: 8/30/2017  

more


Solution:23

function getDateTime(unixTimeStamp) {        var d = new Date(unixTimeStamp);      var h = (d.getHours().toString().length == 1) ? ('0' + d.getHours()) : d.getHours();      var m = (d.getMinutes().toString().length == 1) ? ('0' + d.getMinutes()) : d.getMinutes();      var s = (d.getSeconds().toString().length == 1) ? ('0' + d.getSeconds()) : d.getSeconds();        var time = h + '/' + m + '/' + s;        return time;  }    var myTime = getDateTime(1435986900000);  console.log(myTime); // output 01/15/00  

Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »