Bunu birkaç yerde gördüm
function fn() {
return +new Date;
}
Ve bir tarih nesnesi yerine bir zaman damgası döndürdüğünü görebiliyorum, ancak artı işaretinin ne yaptığına dair herhangi bir belge bulamıyorum.
Birisi açıklayabilir mi?
Bunu birkaç yerde gördüm
function fn() {
return +new Date;
}
Ve bir tarih nesnesi yerine bir zaman damgası döndürdüğünü görebiliyorum, ancak artı işaretinin ne yaptığına dair herhangi bir belge bulamıyorum.
Birisi açıklayabilir mi?
Yanıtlar:
bu + tekli operatördür, şuna eşittir:
function(){ return Number(new Date); }
getTime
nesne üzerinde tanımlı yöntemi kullanmıyorsunuz ?!
.getTime()
her zaman güvence altına alacaktır.
Date.now()
, tarih ve saati milisaniye olarak almanın tercih edilen yoludur.
JavaScript gevşek bir şekilde yazılmıştır, bu nedenle belirli durumlarda tür zorlaması / dönüşümü gerçekleştirir:
http://blog.jeremymartin.name/2008/03/understanding-loose-typing-in.html
http://www.jibbering.com/faq/faq_notes/type_convert.html
Diğer örnekler:
>>> +new Date()
1224589625406
>>> +"3"
3
>>> +true
1
>>> 3 == "3"
true
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());'
İşte "unary add" operatörü ile ilgili özellikler . Umarım yardımcı olur...
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"
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
Tam olarak aynı şeyi yapar:
function () {dönüş 0 + yeni Tarih; }
şununla aynı sonucu verir:
function () {yeni tarih döndür (). getTime (); }
new Date/1