¿Qué hace el signo más en '+ nueva fecha'


Respuestas:


294

ese es el operador + unario, es equivalente a:

function(){ return Number(new Date); }

ver: http://xkr.us/articles/javascript/unary-add/

y en MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Unary_plus


44
Pero, ¿por qué no usarías el getTimemétodo definido en el objeto de fecha?
tkone

30
En casi ninguna circunstancia deberías usar esto. Realmente me quemé por esto. + new Date () además de cualquier tipo de operaciones matemáticas sufrirá una importante penalización de rendimiento. Mira este jsperf, jsperf.com/new-date-timing
Geuis

99
@BradKoch en la brevedad de programación ciertamente no es el ingenio del alma. Como la comunidad de Python lo ha dicho adecuadamente, "explícito siempre es mejor que implícito". ¿Qué sucede si un navegador cambia la conversión de tipo automática que está implícita allí mediante una regresión? ¡Ahora tu código simplemente no funciona! .getTime()siempre se asegurará de que lo haga.
tkone

11
@Geu es otra excelente razón por la que solo porque puedes no significa que debas hacerlo.
tkone

14
Sine ECMAScript 5 existe Date.now(), que es la forma preferida de obtener la fecha y la hora en milisegundos.
cutemachine


6

Una fecha de JavaScript se puede escribir como una cadena:

Jue 10 sep 2015 12:02:54 GMT + 0530 (IST)

o como un número:

1441866774938

Las fechas escritas como números especifican el número de milisegundos desde el 1 de enero de 1970 a las 00:00:00.

En cuanto a su pregunta, parece que al agregar '+' después del operador de asignación '=', convertir la Fecha en un valor de número igual.

lo mismo se puede lograr usando la función Number (), como Number (new Date ());

var date = +new Date(); //same as 'var date =number(new Date());'


3

Solo para dar más información:

Si recuerda, cuando desee encontrar la diferencia horaria entre dos fechas, simplemente haga lo siguiente;

var d1 = new Date("2000/01/01 00:00:00"); 
var d2 = new Date("2000/01/01 00:00:01");  //one second later

var t = d2 - d1; //will be 1000 (msec) = 1 sec

typeof t; // "number"

ahora si marca el tipo de d1-0, también es un número:

t = new Date() - 0; //numeric value of Date: number of msec's since 1 Jan 1970.
typeof t; // "number"

that + también convertirá la Fecha en Número:

typeof (+new Date()) //"number"

Pero tenga en cuenta que 0 + new Date()va a no ser tratado de manera similar! se concatenará como cadena:

0 + new Date() // "0Tue Oct 16 05:03:24 PDT 2018"

1

Es un operador de suma unario y también se usa para la conversión explícita de números, por lo que cuando llama +new Date(), intenta obtener el valor numérico de ese objeto usando valueOf()como obtenemos cadenas detoString()

new Date().valueOf() == (+new Date)  // true

-3

Hace exactamente lo mismo que:

function () {return 0 + new Date; }

que tiene el mismo resultado que:

function () {return new Date (). getTime (); }

11
No en 0 + nueva fecha. Eso primero convierte la fecha en una cadena y luego antepone un "0" (por ejemplo: "0Tue Oct 21 2008 20:38:05 GMT-0400");
Chris Noe

2
1 * nueva fecha, pero 1 + nueva fecha -> Cadena
Kent Fredric

ya, también lo mismo pasanew Date/1
Ashish
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.