Pregunta

I have a unix timestamp. I want to render it as UTC time

In JS console:

var a = new Date(); 
var res = a.getUTCDay()+ '-' + a.getUTCMonth() + '-' + a.getUTCFullYear(); 
res;

The result is "3-11-2013", but the value of 'a' variable is "Wed, 04 Dec 2013 16:28:03 GMT"

What is wrong?

¿Fue útil?

Solución

What is wrong?

getUTCDay returns the day of the week, not the day of the month:

The getUTCDay() method returns the day of the week in the specified date according to universal time, where 0 represents Sunday.

getUTCMonth returns the month, 0 based:

The value returned by getUTCMonth is an integer between 0 and 11 corresponding to the month. 0 for January, 1 for February, 2 for March, and so on.

You want to use .getUTCDate instead and add +1 to the return value of .getUTCMonth:

var res = [a.getUTCDate(), a.getUTCMonth() + 1, a.getUTCFullYear()].join('-');

Otros consejos

The getUTCDay() and getUTCMonth() are both index based (starts with 0), you need to +1 theme to get the "real" value

Unless your codebase is very small, I would refrain from using these poor native JS date formatting functions and just import Moment.js.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top