9

I know this question has been asked and answered many times, but I could not convert a given milliseconds to date and time.

I have the following code:

var date = '1475235770601';
var d = new Date(date);
var ds = d.toLocaleString();
alert(ds);
console.log(ds);

When I run this I see Invalid Date in console as well as in alert.

But when I paste the milliseconds here, it converts fine in the format in local date and time as Fri Sep 30 2016 17:12:50.

Actually I want to convert in in the format 09/30/16 17:12:50.

Mureinik
  • 297,002
  • 52
  • 306
  • 350
Nongthonbam Tonthoi
  • 12,667
  • 7
  • 37
  • 64

3 Answers3

8

Date's constructor takes a number, not a string. Either feed it in directly:

date = 1475235770601; // Note the lack of quotes making it a number

Or, if you already have a string, convert it explicitly:

date = parseInt(date);
Mureinik
  • 297,002
  • 52
  • 306
  • 350
  • "*Date's constructor takes a number, not a string*". Not true, that should be "*The Date constructor takes **either** a number or a string*", it's behaviour changes depending on what it's given. – RobG Oct 06 '16 at 01:56
7

I ended up changing my code like this:

var date = '1475235770601';
var d = new Date(parseInt(date, 10));
var ds = d.toString('MM/dd/yy HH:mm:ss');
console.log(ds);

Output:

09/30/16 17:12:50
Nongthonbam Tonthoi
  • 12,667
  • 7
  • 37
  • 64
1

I got quite a reasonable result with:

const rawDate = new Date(milliseconds)
const date = rawDate.toLocaleDateString() + " " + rawDate.toLocaleTimeString()

This outputs date and time in a locally accepted format (depending on user system datetime settings, I guess)!

So if you need just a locally accepted format (and do not strictly prefer slashes in the date) - you can use that.

Alexander Gorg
  • 1,049
  • 16
  • 32