1612

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.

Penny Liu
  • 15,447
  • 5
  • 79
  • 98
roflwaffle
  • 29,590
  • 21
  • 71
  • 94
  • 24
    Just multiply by 1000 since JS timestamps are in milliseconds and PHP delivers in seconds. – ankr Nov 01 '17 at 09:50
  • 1
    Here is a very useful link with different date format: https://timestamp.online/article/how-to-convert-timestamp-to-datetime-in-javascript Combine with the multiplication by 1000 and it gets the job done! – Kevin Lemaire Mar 25 '20 at 11:13
  • See this how I have achieved: https://stackoverflow.com/a/64089456/2927228 – Hidayt Rahman Sep 27 '20 at 14:25
  • If you have a string in a different date format, see [Parsing a string to a date in JavaScript](/q/5619202/4642212). – Sebastian Simon Feb 14 '22 at 17:55
  • `dt=new Date(1234567890 * 1000).toLocaleString();` gives date+time — or use `.toLocaleDateString()` or `.toLocaleTimeString()`) – ashleedawg May 17 '22 at 03:41

34 Answers34

2273

let unix_timestamp = 1549312452
// 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);

console.log(formattedTime);

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

leonheess
  • 16,068
  • 14
  • 77
  • 112
Aron Rotteveel
  • 81,193
  • 17
  • 104
  • 128
  • also you could save yourself a couple of processor ticks by avoiding the need for the large multiplication by just appending three 0s: echo "var date = new Date(" . $timestamp . "000);\n"; – nickf May 13 '09 at 04:08
  • 128
    @nickf multiplications are trivial on modern CPUs - the string concatenation will require a _lot_ more work! – Alnitak Apr 19 '11 at 19:59
  • 4
    Concatenation should consist of reading memory and writing memory..how could someone design something that takes something simple such as appending and make it more complicated than multiplaction...ask a child to concatenate and they can..multiplicaion is more difficult...plus memory is laid out to work linearly anyawyas...Can someone provide a reference to the @nickf comment? –  Jan 06 '12 at 17:08
  • 32
    Actually it will display time in '10:2:2' format, since it does not add an extra 0 before values below 10. – Fireblaze Oct 04 '12 at 14:47
  • 1
    @Fireblaze Then let's get it fixed, shall we? :] See my answer at the bottom. – trejder Jul 23 '13 at 10:10
  • Any way we can extract the day and date and time, like 21 August, 12:11:23 as well? – SexyBeast Aug 07 '13 at 13:10
  • @Cupidvogel , sure, check the reference the OP provided, or any of the other answers, which cover month and date as well. – Brad Koch Sep 26 '13 at 15:21
  • 19
    @user656925 - Multiplication involves numbers, concatenation involves strings. Computers handle numbers far more efficiently than strings. When string concatenation is done, there's a lot of memory management going on in the background. (However, if you're already doing a string concatenation anyway, then including a few extra characters in one of the strings might actually be less costly on average than the one processor op it takes to multiply two numbers together.) – Brilliand Oct 02 '13 at 21:31
  • Just a minor thing about concatenation: Using .join() is a lot more efficient. However, this [this](http://stackoverflow.com/questions/7299010/why-is-string-concatenation-faster-than-array-join) suggests that concatination is becoming more efficient in some cases. – Kevin Dice Aug 01 '14 at 06:06
  • @Alnitak What suggests that string concatenation takes more memory than number computation? – Alston Mar 19 '16 at 11:53
  • 9
    @Stallman number computation is the most fundamental thing that computers do, and they're extremely efficient at it, both in memory and runtime. Brilliand's comment above is relevant, although IMHO the very final part of his comment is completely bogus. – Alnitak Mar 19 '16 at 11:59
  • @Brilliand What suggests that string concatenation takes more memory than number computation? I would like to know more about it., is that the property of JS or for all kind of language? – Alston Mar 19 '16 at 12:46
  • 5
    @Stallman It's true of all languages (or nearly all, in theory an exotic language could be created that isn't like this - but all the common ones are). A string is stored internally as a pointer to a block of memory where the contents of the string are stored. The pointer itself uses the same amount of memory as most numbers do on the same system, and the memory to store the actual strings is in addition to that. Then when you concatenate the strings, you're most often creating a brand-new string with the combined contents of both strings. – Brilliand Mar 21 '16 at 23:32
  • @Brilliand Here is my understandings: You mean that a string may occupies lots of memory since it consists of lots of chars but the number only takes a little memory. Take `C` for instance, if the system is 64 OS based, the integer takes 4 bytes; nevertheless the strings may take much more than that.(1*N) And in the process of concatenation, the OS requires to allocate additional memory to accommodate the concatenated strings. – Alston Mar 22 '16 at 15:37
  • My timestamp is in UTC format. Any change I need to make here for that? How can I have am/pm? – codec Oct 17 '16 at 09:29
  • @Alston It's really a lot more complicated than that. Strings are stored as a stack pointer to an array, the contents of which are stored on the heap (whereas integers are stored directly on the stack). That means that every call to a string also involves a dereferencing operation. Of course, computers do this quite quickly. But each of these strings is also allocated additional memory to allow for mutation, which can balloon the amount of memory required. – Daniel Nov 03 '20 at 18:03
  • I don't know if it will help the discussion, but beware that if you give the Date constructor a number, it knows exactly how to interpret it. But if you give the Date constructor a string, it would have to validate it, as there are dozens of possible string date time constructs that are all equally as valid, so there would be some validation necessary while the number as an input does not require any – Tony Borchert Aug 05 '21 at 17:13
  • 1
    String.substr() is deprecated nowadays. Use slice instead, which can also cover the negative index. – NoxFly Jan 17 '22 at 11:42
  • To get only date part: `let str = date.toISOString().split('T')[0];` – August Mar 16 '22 at 07:45
  • Please modify the code to use String.substring() instead of String.substr(). It's deprecated. – maverick Dec 22 '22 at 06:38
375

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;
}
console.log(timeConverter(0));
pitust
  • 99
  • 8
shomrat
  • 3,831
  • 1
  • 16
  • 4
  • for HH/MM/SS just use last three variables and this is time will be in your local time but if you want to get the UTC time just use the getUTC methods. Here's the code. – shomrat May 21 '11 at 00:52
  • 43
    I used this solution but tweaked it so that minutes and seconds would show up as :03 or :09 instead of :3 or :9, like so: `var min = a.getMinutes() < 10 ? '0' + a.getMinutes() : a.getMinutes(); var sec = a.getSeconds() < 10 ? '0' + a.getSeconds() : a.getSeconds();` – user1985189 Aug 08 '14 at 16:40
  • 4
    Bug: `getMonth()` returns a month number between 0 and 11, thus `a.getMonth() - 1` is wrong. – jcampbell1 Aug 27 '14 at 17:41
  • 1
    Don't need a list of month names, javascript has that, even in IE. var month = a.toLocaleDateString(undefined, {month: 'short'}) – Curtis Jun 29 '21 at 21:58
285

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...
nicael
  • 18,550
  • 13
  • 57
  • 90
Steve Harrison
  • 121,227
  • 16
  • 87
  • 72
219

Use:

var s = new Date(1504095567183).toLocaleDateString("en-US")
console.log(s)
// expected output "8/30/2017"

and for time:

var s = new Date(1504095567183).toLocaleTimeString("en-US")
console.log(s)
// expected output "3:19:27 PM"

see Date.prototype.toLocaleDateString()

Lee Taylor
  • 7,761
  • 16
  • 33
  • 49
Dan Alboteanu
  • 9,404
  • 1
  • 52
  • 40
132

Modern Solution (for 2020)

In the new world, we should be moving towards the standard Intl JavaScript object, that has a handy DateTimeFormat constructor with .format() method:

function format_time(s) {
  const dtFormat = new Intl.DateTimeFormat('en-GB', {
    timeStyle: 'medium',
    timeZone: 'UTC'
  });
  
  return dtFormat.format(new Date(s * 1e3));
}

console.log( format_time(12345) );  // "03:25:45"

Eternal Solution

But to be 100% compatible with all legacy JavaScript engines, here is the shortest one-liner solution to format seconds as hh:mm:ss:

function format_time(s) {
  return new Date(s * 1e3).toISOString().slice(-13, -5);
}

console.log( format_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.

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

VisioN
  • 143,310
  • 32
  • 282
  • 281
  • I'm pasting your function in Chrome's console :/ Even in your fiddle it's showing 01:02:00 for me ! Tried on Firefox, same results. Very strange...I'm pretty sure it's because I'm GMT+1 ! – Steve Chamaillard Feb 10 '17 at 08:50
  • I've offered an edit for your answer that ignores any timezone, so it'll always show the right formatted value ! – Steve Chamaillard Feb 10 '17 at 09:02
  • 1
    @SteveChamaillard Thank you, Steve. You were right, `toTimeString` was not working well with time zones. Unfortunately your edit was rejected before I saw it. However, I'd suggest to use `toISOString` instead, since `toGMTString` is deprecated and may return different results on different platforms. – VisioN Feb 10 '17 at 14:28
  • Even shorter with ES6: let time = s => new Date(s * 1e3).toISOString().slice(-13, -5) – SamGoody May 22 '18 at 09:33
  • Both aren't working in Safari iOS 13 using the timestamp from `navigator.geolocation` – lys Mar 08 '21 at 20:24
89

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')
Brad Koch
  • 19,267
  • 19
  • 110
  • 137
39

shortest one-liner solution to format seconds as hh:mm:ss: variant:

console.log(new Date(1549312452 * 1000).toISOString().slice(0, 19).replace('T', ' '));
// "2019-02-04 20:34:12"
Luis David
  • 754
  • 8
  • 14
  • 1
    when using this with PHP unix timestamps i get +5h than the actual time for some reason :/ – keanu_reeves Dec 09 '19 at 06:15
  • 2
    @keanu_reeves - sounds like you are in eastern US time zone and the timestamps are UTC. Try removing the .slice(0,19) and I think you will see the timezone of the result is Z (Zulu). – bitfiddler Dec 20 '19 at 05:55
37

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") );
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
homtg
  • 1,999
  • 1
  • 15
  • 20
  • 5
    another advantage of moment.js (or similar libs) would be their support of [relative time](http://momentjs.com/docs/#/customization/relative-time/), for messages like "6 hours ago". – martin Feb 10 '15 at 12:33
  • In your `console.log` examples, I was confused about the format due to the `/`, but it helped me a lot. – NetOperator Wibby Mar 19 '15 at 16:15
  • My timestamp is in UTC format. Any change I need to make here for that? How can I have am/pm? – codec Oct 17 '16 at 09:26
  • moment.js is waaay overkill for such a small thing to do and will affect your performance. Use native methods instead, cf. [Dan Alboteanu's answer](https://stackoverflow.com/a/50255425/7770081) – Robin Métral Mar 10 '19 at 07:53
33

In moment you must use unix timestamp:

const dateTimeString = moment.unix(1466760005).format("DD-MM-YYYY HH:mm:ss");
garritfra
  • 546
  • 4
  • 21
Valix85
  • 773
  • 1
  • 9
  • 20
29

This works with PHP timestamps

var d = 1541415288860;
//var d =val.timestamp;

//NB: use + before variable name
var date = new Date(+d);

console.log(d);
console.log(date.toDateString());
console.log(date.getFullYear());
console.log(date.getMinutes());
console.log(date.getSeconds());
console.log(date.getHours());
console.log(date.toLocaleTimeString());
var d =val.timestamp;
var date=new Date(+d); //NB: use + before variable name

console.log(d);
console.log(date.toDateString());
console.log(date.getFullYear());
console.log(date.getMinutes());
console.log(date.getSeconds());
console.log(date.getHours());
console.log(date.toLocaleTimeString());

the methods above will generate this results

1541415288860
Mon Nov 05 2018 
2018 
54 
48 
13
1:54:48 PM

There's a bunch of methods that work perfectly with timestamps. Cant list them all

James Ikubi
  • 2,552
  • 25
  • 18
27

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)
kapa
  • 77,694
  • 21
  • 158
  • 175
Grzegorz Gierlik
  • 11,112
  • 4
  • 47
  • 55
19

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");
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Peter T.
  • 8,757
  • 3
  • 34
  • 32
  • Do you know how to do it backwards, like converting this format DD-MM-YYYY HH:mm:ss to something like this 1439198499 ?? – Kemat Rochi Apr 04 '16 at 08:08
  • Hi Kemat, You can do it via this statement moment('2009-07-15 00:00:00').unix() – Peter T. Apr 20 '16 at 13:06
  • My timestamp is in UTC format. Any difference I need to make here for that? How can I have am/pm? – codec Oct 17 '16 at 09:25
  • You can easily convert timestamp to date usign momentJS, you checkout this http://coderszine.com/convert-timestamp-to-date-using-javascript/ – Laeeq Feb 08 '18 at 07:03
17

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.

Bernie
  • 171
  • 1
  • 2
  • 5
    for most web solutions, this is the most correct answer, since it uses the client's locale, e.g. 24h vs. 12h am/pm format. For a time string, you would then use: `date.toLocaleTimeString()` – Bachi Jun 16 '13 at 14:02
  • 1
    It will not happen with `toTimeString` method. Check here: http://stackoverflow.com/a/35890537/1249581. – VisioN Dec 22 '16 at 15:15
16

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]);
leonheess
  • 16,068
  • 14
  • 77
  • 112
deadrunk
  • 13,861
  • 4
  • 29
  • 29
13
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
leonheess
  • 16,068
  • 14
  • 77
  • 112
synan54
  • 658
  • 6
  • 16
13

Based on @shomrat's answer, here is a snippet that automatically writes datetime like this (a bit similar to StackOverflow's date for answers: answered Nov 6 '16 at 11:51):

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;
}
Basj
  • 41,386
  • 99
  • 383
  • 673
10

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 ) ) );
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Adria
  • 8,651
  • 4
  • 37
  • 30
8

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
TechWisdom
  • 3,960
  • 4
  • 33
  • 40
8

There are multiple ways to convert unix timestamp to time (HH/MM/SS)

  1. Using new Date() - this is in-built in javascript
  2. moment package - this is a famous node module, but this is going to deprecate.
  3. dayjs package - this is one of the latest and fast growing node module

Using new Date()

const dateTimeStr = new Date(1504052527183).toLocaleString()
const result = (dateTimeStr.split(", ")[1]).split(":").join("/")
console.log(result)

Using moment

const moment = require('moment')
const timestampObj = moment.unix(1504052527183);
const result = timestampObj.format("HH/mm/ss")
console.log(result);

Using day.js

const dayjs = require('dayjs')
const result = dayjs(1504052527183).format("HH/mm/ss")
console.log(result);

you can check the timestamp to date time conversion with an online time conversion tool

Saitejareddy
  • 331
  • 3
  • 3
6
// 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());
Fireblaze
  • 242
  • 3
  • 5
  • I don't think you need an extra, separate function, to get a number with trailing zero, whenever this is necessary -- see my answer at the bottom. – trejder Jul 23 '13 at 10:11
  • 2
    @trejder, in your example, you DUPLICATE the logic while with extra function you have it in one place. Also you trigger date functon (e.g. getHours()) always two times while here - it is one time call. You can never know how heavy is some library function to be re-executed (however i do believe it is light for dates). – walv Jul 18 '14 at 13:43
6

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.

John Slegers
  • 45,213
  • 22
  • 199
  • 169
6

function getDateTimeFromTimestamp(unixTimeStamp) {
    let 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);
}

const myTime = getDateTimeFromTimestamp(1435986900000);
console.log(myTime); // output 01/05/2000 11:00
Paul Rumkin
  • 6,737
  • 2
  • 25
  • 35
Ashish Gupta
  • 1,153
  • 12
  • 14
5
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;
 }
shomrat
  • 3,831
  • 1
  • 16
  • 4
5

Shortest

(new Date(ts*1000)+'').slice(16,24)

let ts = 1549312452;
let time = (new Date(ts*1000)+'').slice(16,24);

console.log(time);
Community
  • 1
  • 1
Kamil Kiełczewski
  • 85,173
  • 29
  • 368
  • 345
5

Try this :

      new Date(1638525320* 1e3).toISOString()  //2021-12-03T09:55:20.000Z
Shahnad S
  • 983
  • 10
  • 17
5

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;
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
shams
  • 51
  • 1
  • 1
4
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
Bhaumik Mehta
  • 365
  • 2
  • 4
4

moment.js

convert timestamps to date string in js

https://momentjs.com/

moment().format('YYYY-MM-DD hh:mm:ss');
// "2020-01-10 11:55:43"

moment(1578478211000).format('YYYY-MM-DD hh:mm:ss');
// "2020-01-08 06:10:11"


xgqfrms
  • 10,077
  • 1
  • 69
  • 68
3

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;
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
milkovsky
  • 8,772
  • 4
  • 28
  • 32
3

Code below also provides 3-digit millisecs, ideal for console log prefixes:

const timeStrGet = date => {
    const milliSecsStr = date.getMilliseconds().toString().padStart(3, '0') ;
    return `${date.toLocaleTimeString('it-US')}.${milliSecsStr}`;
};

setInterval(() => console.log(timeStrGet(new Date())), 299);
tivoni
  • 1,990
  • 4
  • 19
  • 37
3

You can play around with the format (source):

const date = new Date(yourTimestamp).toLocaleDateString('de-DE', {
    weekday: 'long',
    day: '2-digit',
    month: 'long',
    year: 'numeric'
})

Result:

Sonntag, 01. Januar 2023
Artur Müller Romanov
  • 4,417
  • 10
  • 73
  • 132
2

The answer given by @Aron works, but it didn't work for me as I was trying to convert timestamp starting from 1980. So I made few changes as follows

function ConvertUnixTimeToDateForLeap(UNIX_Timestamp) {
    var dateObj = new Date(1980, 0, 1, 0, 0, 0, 0);
    dateObj.setSeconds(dateObj.getSeconds() + UNIX_Timestamp);
    return dateObj;  
}

document.body.innerHTML = 'TimeStamp : ' + ConvertUnixTimeToDateForLeap(1269700200);

So if you have a timestamp starting from another decade or so, just use this. It saved a lot of headache for me.

Amey Vartak
  • 309
  • 2
  • 5
2

If Timestamp is a numeric integer string, it must be converted to integer number first:

<!DOCTYPE html>

<input type="text" id="Date_Timestamp" size="50" oninput='
document.getElementById("Date_Timestamp_Conversion").innerText = 
new Date(this.value) + " _ (Converted to Local Time) \n" +
new Date(this.value).toString() + " _ (Converted to Local Time) \n" +
new Date(this.value).toUTCString() + " _ (Converted to Universal Time, UTC, GMT, GMT+0, GMT-0) \n" +
Date.parse(this.value) + " _ (Timestamp _ The Date is first converted to Universal Time, then converted to Timestamp)\n" +
( isNaN(this.value) ? "Not a Number _ (Timestamp to Local Time)" : new Date(parseInt(this.value)) + " _ (Converted to Local Time)" ) + "\n" +
( isNaN(this.value) ? "Not a Number _ (Timestamp to Universal Time)" : new Date(parseInt(this.value)).toUTCString() + " _ (Converted to Universal Time)" ) + "\n" +
"";'>
<br>
<span id="Date_Timestamp_Conversion">(Type\Paste a "Date" or "Timestamp" in the input box above!)<br></span>
<br>
2021/03/19 = March 19 2021 _ ("Year/Month/Day" _ Supported)<br>
03/19/2021 = March 19 2021 _ ("Month/Day/Year" _ Supported)<br>
19/03/2021 = Invalid Date _ ("Day/Month/Year" _ Not Supported)<br>
<br>

<script>

d = new Date();
document.getElementById("Date_Timestamp").value =
d.getFullYear() + "/" + (d.getMonth() + 1) + "/" + d.getDate() + ", " + d.toLocaleTimeString([], {hour12:false, timeZoneName:"short"});

</script>
User
  • 71
  • 1
  • 7
1

I was looking for a simple, short solution to this problem as well. That's why I created this function.

You can easily expand the functionality. This function has all the options I need. It's basically doing the same as the php date function.

function date_format(unix_timestamp,format){
    const date=new Date(unix_timestamp*1000);
    const dateObject={
        'Y' : date.getFullYear(),
        'm' : String(date.getMonth()).padStart(2,'0'),
        'd' : String(date.getDate()).padStart(2,'0'),
        'H' : String(date.getHours()).padStart(2,'0'),
        'i' : String(date.getMinutes()).padStart(2,'0'),
        's' : String(date.getSeconds()).padStart(2,'0'),
    };
    var dateString='';
    for (let char of format) {
        if(char in dateObject){
            dateString+=dateObject[char];
        }else{
            dateString+=char;
        }
    }
    return dateString;
}

console.log(date_format(1667127654,'H/i/s')); // 12/00/54
console.log(date_format(1667127654,'Y-m-d H:i:s')); // 2022-10-30 12:00:54
console.log(date_format(1667127654,'d.m.Y')); // 30.10.2022
console.log(date_format(1667127654,'H:i:s')); // 12:00:54
B. Martin
  • 1,047
  • 12
  • 18