Artı işareti '+ new Date' içinde ne yapar


Yanıtlar:


294

4
Ama neden getTimenesne üzerinde tanımlı yöntemi kullanmıyorsunuz ?!
tkone

30
Neredeyse hiçbir koşulda bunu gerçekten kullanmamalısınız. Bu konuda gerçekten yanmıştım. + new Date () her türlü matematiksel işlemlere ek olarak önemli bir performans cezasına çarptırılacaktır. Şu jsperf'e bakın, jsperf.com/new-date-timing
Geuis

9
@BradKoch programlama özünde kesinlikle ruhun zekâsı değildir. Python topluluğu bu kadar açık bir şekilde ifade ettiğinden, "açık, her zaman örtük olmaktan iyidir." Bir tarayıcı, bir regresyon yoluyla ima edilen otomatik tür dönüşümünü değiştirirse ne olur? Şimdi kodunuz çalışmıyor! .getTime()her zaman güvence altına alacaktır.
tkone

11
@Guis sadece yapabileceğiniz için yapmanız gerekmediği için mükemmel bir neden!
tkone

14
Sinüs ECMAScript 5 Date.now(), tarih ve saati milisaniye olarak almanın tercih edilen yoludur.
cutemachine


6

JavaScript tarihi dize olarak yazılabilir:

Perş 10 Eyl 2015 12:02:54 GMT + 0530 (IST)

veya bir sayı olarak:

1441866774938

Sayı olarak yazılan tarihler, 1 Ocak 1970, 00:00:00 tarihinden bu yana geçen milisaniye sayısını belirtir.

Sorunuza gelince, atama operatörü '=' eklendikten sonra '+' ekleyerek, Tarihi eşit sayı değerine dönüştürüyor.

Number (yeni Date ()) gibi Number () işlevi kullanılarak da elde edilebilir;

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


3

Daha fazla bilgi vermek için:

Hatırlarsanız, İki Tarih arasındaki saat farkını bulmak istediğinizde, sadece aşağıdaki şekilde yapabilirsiniz;

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"

şimdi d1-0 türünü kontrol ederseniz, aynı zamanda bir sayıdır:

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

bu + ayrıca Tarihi Sayıya dönüştürür:

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

Ama bu notu 0 + new Date()olacak değil benzer şekilde işlenebilir! dize olarak birleştirilecektir:

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

1

Bu bir tekli ekleme operatörü ve aynı zamanda açık Sayı dönüştürme için kullanılır, bu yüzden çağırdığınızda +new Date(), valueOf()biz dize alır gibi kullanarak o nesnenin sayısal değerini almaya çalışırtoString()

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

-3

Tam olarak aynı şeyi yapar:

function () {dönüş 0 + yeni Tarih; }

şununla aynı sonucu verir:

function () {yeni tarih döndür (). getTime (); }

11
Hayır 0 + yeni Tarih. Bu, önce tarihi bir dizeye dönüştürür ve ardından bir "0" ekler (ör: "0Tay 21 Ekim 20:38:05 GMT-0400");
Chris Noe

2
1 * yeni Tarih olacak, ancak 1 + yeni Tarih -> Dize
Kent Fredric

Evet, aynı şey için geçerlinew Date/1
Ashish
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.