38 Soru: JavaScript'te zaman damgasını nasıl alırsınız?

tarafından oluşturulan soru Mon, Apr 27, 2015 12:00 AM

JavaScript’te zaman damgasını nasıl alabilirim?

Unix'in zaman damgasına benzer bir şey, yani geçerli saati ve tarihi gösteren tek bir sayı. Bir sayı veya bir dize olarak.

    
3707
  1. JS'de 64 bit zaman damgası nasıl elde edilir?
    2018-03-17 01: 32: 02Z
  2. @ AlexanderMills JavaScript, 64bit tam sayıları desteklemediğinden, iki adet 32 ​​bit tam sayı almanız gerekir. Başka bir soru sor.
    2018-04-13 07: 32: 05Z
30 Yanıtlar                              30                         

Kısa ve amp; Snazzy:

 
+ new Date()

plus gibi bir tekli işleç, valueOf nesnesindeki Date yöntemini tetikler ve zaman damgasını döndürür (herhangi bir değişiklik yapmadan).

Detaylar:

Neredeyse tüm tarayıcılarda Date.now() UTC zaman damgasını milisaniye içinde almak için; Bunun dikkate değer bir istisnası IE8 ve daha önceki sürümlerdir (bkz. uyumluluk tablosu ) .

Bunun için kolayca bir altlık yapabilirsiniz:

 
if (!Date.now) {
    Date.now = function() { return new Date().getTime(); }
}

Zaman damgasını saniye içinde almak için aşağıdakileri kullanabilirsiniz:

 
Math.floor(Date.now() / 1000)

Veya alternatif olarak kullanabilirsiniz:

 
Date.now() / 1000 | 0

Hangisi biraz daha hızlı olmalı, ancak daha az okunabilir olmalı (ayrıca bakın bu cevabı ).

Date.now() kullanmanızı öneriyoruz (uyumluluk şimiyle). Biraz daha iyi çünkü daha kısa ve amp; yeni bir Date nesnesi oluşturmaz. Bununla birlikte, bir pırıltı istemiyorsanız & Maksimum uyumluluk, milisaniye 'de zaman damgasını almak için "eski" yöntemi kullanabilirsiniz:

 
new Date().getTime()

Hangisini daha sonra böyle saniyelere dönüştürebilirsiniz:

 
Math.round(new Date().getTime()/1000)

Ayrıca yukarıda gösterdiğimiz valueOf yöntemini de kullanabilirsiniz:

 
new Date().valueOf()

Milisaniye cinsinden zaman damgası

 
var timeStampInMs = window.performance && window.performance.now && window.performance.timing && window.performance.timing.navigationStart ? window.performance.now() + window.performance.timing.navigationStart : Date.now();

console.log(timeStampInMs, Date.now());
    
4566
2018-05-30 11: 01: 20Z
  1. Önemli bir istisna, node.js. Buraya Google’da da aynı şeyi yapmak isteyen geldim
    2015-01-16 17: 33: 09Z
  2. Date.now() / 1000 | 0, Yıl 2038’den muzdarip olmaz sorun ? new Date('Jan 1, 2039') / 1000 | 0 == -2117514496
    2015-05-03 07: 03: 17Z
  3. veya hatta, Math.floor .. kullanarak serbest .. ~~(Date.now() / 1000)
    2015-05-19 15: 23: 48Z
  4. @ MilanBabuškov ama node.js Date.now() destekliyor mu
    2016-04-04 13: 08: 07Z
  5. +new Data akıllı olsa da, diğer aygıtlar tarafından okunamaz. Date.now() daha net ve başkalarının neler olup bittiğini bilmesini sağlıyor.
    2017-03-29 19: 06: 36Z

Bunu beğendim, çünkü küçük:

 
+new Date

Bunu da sevdim, çünkü bu kadar kısa ve modern tarayıcılarla uyumlu ve 500'den fazla kişi bunun daha iyi olduğunu oyladı:

 
Date.now()
    
474
2017-11-30 19: 23: 44Z
  1. Bu seçenek kötü bir fikirdir. Kolayca gözden kaçırılır, yazım hatası gibi görünür ve gerçekte bir dil yan etkisine dayanır. Kötü kod görüyorum.
    2012-10-29 15: 51: 23Z
  2. @ Billy Hatırladığım kadarıyla her zaman 1M kez önerilen iki çözümdeki zaman damgasını hesapladım ve ortalama çalışma zamanını hesapladım. Firefox ve Chrome'da koştum, getTime her iki tarayıcıda da daha hızlı. Bu, (marjinal) daha yavaş olsa bile new Date().getTime()'u seçeceğimi söyledi. Neyse ki benim için, daha hızlı çözüm zaten okunaklı bir çözüm!
    2013-07-08 12: 44: 19Z
  3. @ FabrícioMatté ile anlaştı. Tekli operatör davranışı ilkel olmayabilir, ancak daha fazla çalışmadıysanız, birçok takımda etkin şekilde çalışmayı beklemeyin.
    2013-07-18 01: 58: 54Z
  4. @ Niklaus Bu, onu başka bir dizgeyle birleştirdiğiniz için. Bu durumda, new Date().toString() olarak adlandırılır.
    2013-10-02 11: 50: 18Z
  5. meraktan çıkma + operatörünün bir dizge gibi çıkmasını sağlamak için ne yapıyor?
    2014-12-19 10: 47: 52Z

JavaScript, o zamandan bu yana geçen milisaniye sayısıyla çalışır, oysa diğer dillerin çoğu saniye ile çalışır. Milisaniye ile çalışabilirsiniz, ancak PHP için bir değer ilettiğinizde, PHP yerel fonksiyonları muhtemelen başarısız olacaktır. Bu yüzden milisaniyeleri değil her zaman saniyeyi kullandığımdan emin olmak için.

Bu size bir Unix zaman damgası verecektir (saniye olarak):

 
var unix = Math.round(+new Date()/1000);

Bu, dönemden bu yana milisaniyeleri verir (Unix zaman damgasını değil):

 
var milliseconds = new Date().getTime();
    
255
2011-05-30 21: 12: 15Z
  1. PHP, kendilerini microtime () işleviyle kullandığı için milisaniye ile iyi çalışmalıdır.
    2011-09-10 00: 34: 04Z
  2. microtime () mevcutken, php'deki çoğu zaman ilişkili işlevler zaman damgasının saniye cinsinden değil, saniye cinsinden olmasını bekler. Dahası, microtime (), ondalık parçanın bir saniyenin kesirleri olduğu (doğru mikrosaniye doğru) bir float (doğru yaparsanız) döndürürken, newDate (). GetTime (), yalnızca bir milisaniyeyi sayarken bir int döndürür. çağ. Örneğin (php) zemini çağırırsanız (mikrotime (true)), bu, mikro veya milisaniye değil, saniye cinsinden olan ve arama süresi () ile aynı olacaktır. Yukarıdaki gibi 1000'e bölünmek, bunun için en kolay çözümdür.
    2012-05-02 21: 32: 39Z
  3. Yuvarlak yerine zemin kullanın. 700 ms hala tam saniye değil
    2014-02-10 08: 36: 54Z
 
var time = Date.now || function() {
  return +new Date;
};

time();
    
135
2014-12-16 13: 31: 37Z
  1. Neden || Şebeke? Date.now () tüm tarayıcılarda bulunmuyor mu?
    2008-10-22 00: 58: 58Z
  2. Görünüşe göre değil, kodu modulejs içinde buldum
    2008-11-04 08: 13: 27Z
  3. Tarih .now () , JavaScript 1.5'ten alınmıştır ve IE 8'de desteklenmemektedir.
    2011-07-14 18: 54: 59Z
  4. Date.now yöntemini destekleyecek biçimde güncellenmemiş olan motorlar, aşağıdaki şim kullanılarak, bunun yokluğunda çalışabilir: if (! Date.now) {Date. now = function now () {return + (new Date); }; }
    2012-10-04 07: 21: 16Z

Bu yanıtta açıklamaları olan birçok çözüm sunuyorum. Bir şey belirsizse soru sormaktan çekinmeyin
Not: Maalesef biri kredi vermeden bunu en üst cevaba birleştirdi.


Hızlı ve kirli çözüm:

 
Date.now() /1000 |0
  

Warning : |0 büyüsünü yaparsanız, 2038’de olabilir ve negatif sayıları döndürür. O zamanın yerine Math.floor() kullanın

Math.floor() çözüm:

 
Math.floor(Date.now() /1000);

Bu yanıtın altındaki yorumlardan alınan Derek 朕 會 功夫 'dan bazı inek alternatif:

 
new Date/1e3|0

Date.now()’un çalışmasını sağlamak için polyfill:

IE’de çalışmasını sağlamak için bunu yapabilirsiniz ( MDN ):

 
if (!Date.now) {
    Date.now = function now() {
        return new Date().getTime();
    };
}

Haftanın yılını /gününü /gün ışığından yararlanma zamanını umursamıyorsanız, 2038'den sonra bunu kaldırabilir ve bunu kullanabilirsiniz:

 
var now = (function () {
    var year = new Date(new Date().getFullYear().toString()).getTime();
    return function () {
        return Date.now() - year
    }
})();
  

Nasıl görüneceğine dair bir çıktı:

 
new Date()
Thu Oct 29 2015 08:46:30 GMT+0100 (Mitteleuropäische Zeit )
new Date(now())
Thu Oct 29 1970 09:46:30 GMT+0100 (Mitteleuropäische Zeit )
     

Tabii ki, gün ışığından yararlanma saati kıracak, ancak ne yaptığınıza bağlı olarak   İkili yapmak gerekirse, bu sizin için yararlı olabilir inşa ediyor   int32'den sonra zaman damgaları üzerindeki işlemler 2038'de sona erecek.

     

Bu, negatif değerler de verir ancak yalnızca bu bilgisayarın kullanıcısıysa   kodunuzu çalıştırıyorsanız, PC’lerinin saatini en az   Bir önceki yılın 31 Aralık tarihi.


Göreceli süreyi yalnızca kodun ilk çalıştırıldığı andan itibaren bilmek istiyorsanız, bunun gibi bir şey kullanabilirsiniz:

 
var relativeTime = (function () {
    var start = Date.now();
    return function () {
        return Date.now() - start
    }
})();

jQuery kullanıyorsanız, $.now()'u jQuery's Docs $.now()’dan bu yana çoklu dolumu eski yapan aynı şeyi yapar: (new Date).getTime()

jQuery’nin sürümüyle ilgili mutluluğunuz varsa, bulamadığımdan bu yana bu yanıtını almayı düşünün kendim.


Şimdi |0'un ne yaptığı hakkında küçük bir açıklama:

| sağlayarak, tercümana ikili VEYA işlemi yapmasını söyleyin. Bit işlemleri, ondalık sonucu Date.now() / 1000'dan bir tam sayıya dönüştüren mutlak sayılar gerektirir.

Bu dönüşüm sırasında, ondalık sayılar kaldırılır ve Math.floor()’la aynı sonuçla ancak daha az kod kullanılır.

  

Yine de uyarılma: 64 bitlik bir çiftliği 32 bitlik bir tam sayıya dönüştürür. Bu büyük sayılarla uğraşırken bilgi kaybına neden olur. Zaman damgaları, 3238 tamsayı taşması nedeniyle 2038'den sonra kesilecek.


Date.now hakkında daha fazla bilgi için bu bağlantıyı izleyin: Date.now() @ MDN

    
116
2018-04-04 15: 46: 05Z
  1. | 0, Math.floor () işlevine benzer, çünkü biraz işlemdir (yüzen ile çalışmaz). normalde bir işlev çağrısı olmadığı için Math.floor () işlevinden daha hızlıdır, yerel bir javascript operatörüdür.
    2012-08-24 06: 53: 27Z
  2. 2013-03-16 02: 36: 33Z
  3. @ Christophe neden böyle düşünüyorsun? IE düzeltme nedeniyle? Bu kısmı dışında oldukça basit ve özelleştirilebilir düşünüyorum.
    2013-09-16 09: 58: 00Z
  4. polyfills /shim karmaşık değil. 9 farklı tarayıcı versiyonunu destekleme zorunluluğunun ve hangi standartları benimseyeceklerini ve sadece ne yapacaklarını seçmeye karar veren sektörün bir sonucudur.
    2013-09-24 20: 35: 38Z
  5. Başvuru için alabileceğiniz en küçük kod new Date/1e3|0'dur.
    2014-11-15 02: 11: 08Z
 
var timestamp = Number(new Date()); // current time as number
    
80
2008-10-21 13: 00: 22Z

jQuery , zaman damgası almak için kendi yöntemini sağlar:

 
var timestamp = $.now();

(bunun yanı sıra sadece (new Date).getTime() ifadesini uygular)

REF: http://api.jquery.com/jQuery. Şimdi /

    
58
2013-03-15 14: 19: 22Z
  1. jQuery, farklı JavaScript API'leriyle olan tarayıcılar arası uyumluluk sorunlarıyla da ilgilenecektir.
    2014-12-09 21: 55: 52Z
  2. @ VisioN Node.js.'de zaman damgası yapmanın bir yolunu aradım. Stackoverflow'ta bir javascript sorusu buldum ve jQuery'de yardımcı olmayan bir cevap alıyorum. Javascript ve jQuery iki şeydir. Orada her javascript çerçevesine cevap verirsek, yığın akışındaki Q /A felsefesine aykırı olan, muhtemelen sınırsız sayıda cevap veririz. Ayrıca: i.stack.imgur.com/Ledgt.gif : D
    2015-01-28 08: 38: 39Z
  3. @ VisioN Javascript'in bir tarayıcıda kullanılması gerektiğini kim söyledi?
    2015-01-28 09: 03: 15Z
  4. @ PierreArlaud Ve kim bu sorunun sadece NodeJS ile ilgili olduğunu söyledi?
    2015-07-15 08: 27: 29Z
  5. @ KingRider Elde edilen değer her zaman parseInt olacağından, Number'da gerek yoktur.
    2016-12-19 14: 05: 32Z

 
console.log(new Date().valueOf()); // returns the number of milliseconds since the epoch
    
40
2016-06-24 18: 48: 56Z
  1. Bu, +new Date'a eşittir .. :)
    2011-11-01 20: 01: 22Z
  2. sadece Date.now() yapın
    2013-05-20 22: 12: 36Z
  3. @ Orlando diğer yanıtları gördü, şu anda sorun () tarayıcı desteği
    2013-09-14 16: 49: 01Z
  4. @ Christophe sadece basit bir dolgu yapar, developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
    2013-09-14 16: 52: 02Z
  5. @ Orlando tam olarak, sadece yapma Date.now ()
    2013-09-14 16: 53: 36Z

Sadece eklemek için, burada Javascript'te bir zaman damgası dizgisi döndüren bir işlev. Örnek: 15:06:38 PM

 
function displayTime() {
    var str = "";

    var currentTime = new Date()
    var hours = currentTime.getHours()
    var minutes = currentTime.getMinutes()
    var seconds = currentTime.getSeconds()

    if (minutes < 10) {
        minutes = "0" + minutes
    }
    if (seconds < 10) {
        seconds = "0" + seconds
    }
    str += hours + ":" + minutes + ":" + seconds + " ";
    if(hours > 11){
        str += "PM"
    } else {
        str += "AM"
    }
    return str;
}
    
39
2012-09-21 19: 46: 55Z
  1. OP bir tamsayı zaman damgası hakkında soru soruyor; bu, zamanın bir dize temsilidir.
    2012-10-10 19: 36: 46Z
  2. "Unix'in zaman damgasına benzer, yani, geçerli saati gösteren tek bir sayı"
    2013-01-16 19: 44: 18Z
  3. Zamanı görüntülemek için bir kodum vardı, ancak Avustralya’nın bazı bölümleri tam tarih gösterdi, bu komut dosyası ayrılmama ve doğru göstermeme yardımcı oldu. (Bunun için +1)
    2018-02-07 00: 27: 35Z

Diğer seçeneklere ek olarak, ISO ile bir tarih formatı istiyorsanız, doğrudan edinebilirsiniz

 
console.log(new Date().toISOString());
    
39
2016-06-24 18: 59: 36Z
  1. Sorulması gereken soruyla bir tamsayı döndürmüyor!
    2016-09-22 23: 01: 57Z
  2. @ AlexVentura, ISO şeklinde bir tarih biçimiyle bir tarih nesnesini örnekleyebilir ve aralarında çıkarabilirsiniz. Örneğin: new Date("2017-05-04T07:11:28.940Z") - new Date("2017-05-04T07:11:14.092Z")
    2017-05-04 07: 19: 53Z

Tarih , JavaScript'teki yerel bir nesne, zamanla ilgili tüm verileri elde etme yöntemimizdir.

JavaScript’te dikkatli olun, zaman damgası istemci bilgisayar setine bağlıdır, bu yüzden% 100 doğru zaman damgası değildir. En iyi sonucu almak için, sunucu tarafından gelen zaman damgasını almanız gerekir.

Her neyse, tercih ettiğim yol vanilya kullanmak. Bu, JavaScript'te yapmanın yaygın bir yoludur:

 
Date.now(); //return 1495255666921

MDN’de aşağıdaki gibi bahsedilmiştir:

  

Date.now () yöntemi, o zamandan beri geçen milisaniye sayısını döndürür.   1 Ocak 1970 00:00:00 UTC.
  Now () statik bir Tarih yöntemi olduğundan, her zaman Date.now () olarak kullanırsınız.

ES5'in altındaki bir sürümünü kullanıyorsanız, Date.now(); çalışmıyor ve kullanmanız gerekiyor:

 
new Date().getTime();
    
33
2019-01-28 06: 24: 14Z

Henüz görmediğim bir

 
Math.floor(Date.now() / 1000); // current time in seconds

Henüz görmediğim bir başkası:

 
var _ = require('lodash'); // from here https://lodash.com/docs#now
_.now();
    
28
2018-04-04 16: 10: 50Z
  1. Date.now() /1000 |0 da aynı şeyi yaptı ve daha önce cevaplandı
    2014-12-17 13: 55: 34Z
  2. iyi. Bunun içine Math.floor() yazdım ama sadece |0 ile aynı etkiye sahip olduğunu netleştirmek için. sana zarar vermek istemedim sadece cevabınızın bir şekilde var olduğunu söylemek istedim. Verilen tüm cevaplara bakarak, bir şekilde dikkat çeken bir kısmı vardır.
    2014-12-21 14: 16: 19Z
  3. _.now()'u kullanmak için tüm Lodash kütüphanesini içe aktarmanın biraz fazla eksik olduğunu düşünüyorum. Sadece ithalatı tavsiye ederimKullanmanız gereken temel işlevsellik (bu durumda, NPM'deki _.now () ), ancak paketlerini bile yalnızca Date.now() kullanmaktan alıkoymuşlardır.
    2018-04-04 15: 03: 18Z

Date.getTime() yöntemiyle biraz kullanılabilir çimdik:

  

getTime yönteminin döndürdüğü değer, milisaniye sayısıdır   1 Ocak 1970’ten bu yana 00:00:00 UTC.

Unix zaman damgasını almak için sonucu 1000 ile bölün, floor gerekirse:

 
(new Date).getTime() / 1000

Date.valueOf() yöntemi, işlevsel olarak Date.getTime()'a eşdeğerdir; bu, aynı sonuçları elde etmek için tarih nesnesindeki aritmetik işleçleri kullanmayı mümkün kılar. Bence bu yaklaşım okunabilirliği etkiliyor.

    
26
2015-05-07 09: 10: 28Z
  1. Parantezlere ihtiyacınız yok: new Date().getTime() / 1000
    2012-05-30 05: 01: 49Z
  2. Onlara ihtiyacınız yok, ancak kodu daha okunaklı hale getiriyor (IMHO). Lezzet meselesi sanırım.
    2012-09-18 07: 10: 27Z
  3. ()'dan sonra new Date'a, .getTime()'dan sonra bile /'a ihtiyaç duymazsınız.
    2014-11-15 02: 12: 34Z

    Math.floor(new Date().getTime() / 1000) kodu new Date / 1E3 | 0'a kısaltılabilir.

    Doğrudan getTime() 'yı atlamayı düşünün > Sorgulama ve | 0'u Math.floor() işlev. 1E3'un 1000 için daha kısa bir eşdeğer olduğunu hatırlamakta fayda var (1E3'u sabit olarak belirtmek için büyük harf E, küçük harflerden daha çok tercih edilir).

    Sonuç olarak aşağıdakileri elde edersiniz:

     
    var ts = new Date / 1E3 | 0;
    
    console.log(ts);
        
    24
    2018-03-27 06: 08: 05Z
    1. Evet, kodu el ile küçültmeyin, özellikle 1 bayt tasarruf edin.
      2016-02-07 17: 08: 23Z
    2. @ dchest "Math.floor(new Date().getTime()/1000)".length == 37; "new Date/1E3|0".length == 14; 37 -14 = 23 bayt;
      2016-09-24 03: 39: 05Z
    3. Kodunuzu okunamaz hale getirmenin harika bir yolu ...
      2017-10-25 07: 51: 22Z
    4. @ Valentin Neredeyse hiçbir yararı için basit kodu küçültüyor /karmaşıklaştırıyorsunuz. Bunu yapmak için bir şey görmüyorum. Code Golf'da değiliz!
      2017-10-29 07: 58: 21Z
    5. @ Valentin Lütfen Math.floor()'u |0 ile değiştirmenin bu kodu "açık ve anlaşılır" hale getirdiğini açıklayın. 1000 yerine 1E3 yerine 1 byte tasarruf yapmanın ne demek olduğunu açıklayın. Bu gülünç. Kötü kod görüyorum.
      2017-10-31 08: 46: 12Z

    moment.js kullanmanızı şiddetle tavsiye ediyorum. UNIX döneminden bu yana milisaniye sayısını almak için şunu yapın:

     
    moment().valueOf()
    

    UNIX döneminden bu yana geçen saniye sayısını bulmak için şunu yapın:

     
    moment().unix()
    

    Ayrıca şu gibi zamanları da dönüştürebilirsiniz:

     
    moment('2015-07-12 14:59:23', 'YYYY-MM-DD HH:mm:ss').valueOf()
    

    Bunu her zaman yaparım. Amaçlanan herhangi bir punto değil.

    Tarayıcıda moment.js'u kullanmak için:

     
    <script src="moment.js"></script>
    <script>
        moment().valueOf();
    </script>
    

    MomentJS'i kurmanın ve kullanmanın diğer yolları da dahil olmak üzere daha fazla ayrıntı için docs

        
    21
    2015-10-01 07: 28: 33Z

    İşte biçiminde zaman damgası oluşturmak için basit bir işlev: mm /dd /yy ss: dd: ss

     
    function getTimeStamp() {
        var now = new Date();
        return ((now.getMonth() + 1) + '/' +
                (now.getDate()) + '/' +
                 now.getFullYear() + " " +
                 now.getHours() + ':' +
                 ((now.getMinutes() < 10)
                     ? ("0" + now.getMinutes())
                     : (now.getMinutes())) + ':' +
                 ((now.getSeconds() < 10)
                     ? ("0" + now.getSeconds())
                     : (now.getSeconds())));
    }
    
        
    20
    2013-07-03 15: 10: 49Z
    1. @ b123400 - İşte Lisp sürümü: (new (chain (-date) (to-i-s-o-string))).
      2013-08-24 03: 17: 17Z

     
    // The Current Unix Timestamp
    // 1443534720 seconds since Jan 01 1970. (UTC)
    
    // seconds
    console.log(Math.floor(new Date().valueOf() / 1000)); // 1443534720
    console.log(Math.floor(Date.now() / 1000)); // 1443534720
    console.log(Math.floor(new Date().getTime() / 1000)); // 1443534720
    
    // milliseconds
    console.log(Math.floor(new Date().valueOf())); // 1443534720087
    console.log(Math.floor(Date.now())); // 1443534720087
    console.log(Math.floor(new Date().getTime())); // 1443534720087
    
    // jQuery
    // seconds
    console.log(Math.floor($.now() / 1000)); // 1443534720
    // milliseconds
    console.log($.now()); // 1443534720087
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
        
    20
    2016-06-24 18: 47: 59Z

    Yalnızca kullanabilirsiniz

     
        var timestamp = new Date().getTime();
        console.log(timestamp);

    geçerli zaman damgasını almak için. Fazladan bir şey yapmanıza gerek yok.

        
    20
    2016-06-24 18: 48: 03Z

    Mikrosaniye çözünürlüğe sahip bir zaman damgası için, performance.now :

     
    function time() { 
      return performance.now() + performance.timing.navigationStart;
    }
    

    Bu, örneğin 1436140826653.139'u verirken, Date.now yalnızca 1436140826653'u verir.

        
    18
    2015-07-06 00: 01: 55Z

    Bugün - 2018.06.27 Saf js çözümleri için bir süre karşılaştırma yapıyorum. Bu, JS’de ışık /verimli bir şekilde zaman almak /ölçmek isteyen kişiler için yararlı olabilir (örn. Simülasyonlar, oyunlar vb. Gerçek zamanlı uygulamalar için)

    MacOs High Sierra 10.13.3'te Chrome 67.0.3396.99 (64 bit), Safari 11.0.3 (13604.5.6), Firefox 59.0.2 (64-bit) üzerinde test edilmiştir. Aşağıda ekran görüntüsünde size en hızlı tarayıcı (Safari) sonuçlarını göstereyim:

     buraya resim açıklamasını girin

    Gördüğüm gibi Date.now(), üç tarayıcının tümüne zaman damgası almak için en hızlı yöntemdi. Safari'nin saniyede 19.2M işlemi var, Firefox 16.1M, Chrome 7.8M.

    new Date()*1, Chrome (2.8M) ve Firefox (2.6M) için en yavaştı. Number(new Date()), Safari (2.9M) için en yavaştı.

    Yani kazanan JS kodu Date.now() ve en hızlı tarayıcı Safari'dir (kromdan 2 kat daha hızlı!).

    Makinenizi burada test edebilirsiniz: https://jsperf.com/timestamp-test-x .

        
    18
    2018-06-27 16: 59: 13Z

    Date.now özelliğini desteklemeyen herhangi bir tarayıcı. Geçerli tarih saatini almak için bunu kullanabilirsiniz:

     
    currentTime = Date.now() || +new Date()
    
        
    16
    2013-05-09 06: 53: 40Z
    1. (Yorumumu silme) Kodunuzda bir sorun var: önce desteğini kontrol etmek yerine Date.now yöntemini yürütün. Eski tarayıcılarda Date.now bir işlev değildir hatasına neden olur.
      2015-05-07 09: 18: 53Z
    2. Belki de daha iyi bir alternatif, onu çağırmaya çalışmadan önce Date.now'un gerçekten var olduğunu (ve bir işlev olduğunu) iddia etmek için üçlü bir operatör kullanmak olabilir: currentTime = typeof Date.now === "function" ? Date.now() : +new Date().
      2018-04-04 14: 54: 39Z

    Bunun bir çözümü var: unixtime damgasını js'de tim'e çeviren bir sonuç var

     
    var a = new Date(UNIX_timestamp*1000);
    var hour = a.getUTCHours();
    var min = a.getUTCMinutes();
    var sec = a.getUTCSeconds();
    
        
    14
    2013-07-01 06: 47: 59Z

    Belirli bir Date nesnesini JQuery Cookie .

    İşte bir örnek:

     
    var date = new Date();
    var timestamp = +date;
    
        
    14
    2015-03-11 09: 52: 48Z
    1. Yeni Date () Nesnesini yazmak üzereydim. Günlüğü konsolda tutabilir (yeni Date ()) ve ardından yeni Date () altındaki ilgili yöntemleri gözden geçirebilirsiniz nesne /işlev
      2018-01-18 00: 38: 17Z

    Node.js'de bir zaman damgası oluşturmanın temel bir yolunu istiyorsanız, bu iyi sonuç verir.

     
    var time = process.hrtime();
    var timestamp = Math.round( time[ 0 ] * 1e3 + time[ 1 ] / 1e6 );
    

    Ekibimiz bunu bir yerel ana bilgisayar ortamında önbellek bozmak için kullanıyor. Çıkış /dist/css/global.css?v=245521377, ki burada 245521377, hrtime() tarafından üretilen zaman damgasıdır.

    Umarım bu yardımcı olur, yukarıdaki yöntemler de işe yarayabilir ancak bunu Node.js.'deki ihtiyaçlarımız için en basit yaklaşım olarak buldum.

        
    14
    2015-05-29 13: 40: 52Z

    Bu iş gibi görünüyor.

     
    console.log(clock.now);
    // returns 1444356078076
    
    console.log(clock.format(clock.now));
    //returns 10/8/2015 21:02:16
    
    console.log(clock.format(clock.now + clock.add(10, 'minutes'))); 
    //returns 10/8/2015 21:08:18
    
    var clock = {
        now:Date.now(),
        add:function (qty, units) {
                switch(units.toLowerCase()) {
                    case 'weeks'   :  val = qty * 1000 * 60 * 60 * 24 * 7;  break;
                    case 'days'    :  val = qty * 1000 * 60 * 60 * 24;  break;
                    case 'hours'   :  val = qty * 1000 * 60 * 60;  break;
                    case 'minutes' :  val = qty * 1000 * 60;  break;
                    case 'seconds' :  val = qty * 1000;  break;
                    default       :  val = undefined;  break;
                    }
                return val;
                },
        format:function (timestamp){
                var date = new Date(timestamp);
                var year = date.getFullYear();
                var month = date.getMonth() + 1;
                var day = date.getDate();
                var hours = date.getHours();
                var minutes = "0" + date.getMinutes();
                var seconds = "0" + date.getSeconds();
                // Will display time in xx/xx/xxxx 00:00:00 format
                return formattedTime = month + '/' + 
                                    day + '/' + 
                                    year + ' ' + 
                                    hours + ':' + 
                                    minutes.substr(-2) + 
                                    ':' + seconds.substr(-2);
                }
    };
    
        
    13
    2015-10-09 02: 03: 25Z
    1. güzel gelişmiş komut dosyaları, iyi işler!
      2016-10-31 14: 42: 08Z

    lodash ve alt çizgi için kullanıcı, _.now’u kullanın.

     
    var timestamp = _.now(); // in milliseconds
    
        
    12
    2015-03-30 08: 40: 23Z

    Moment.js , Javascript Tarihleri ​​ile uğraşırken bir çok acıyı ortadan kaldırabilir.

    Bkz: http://momentjs.com/docs/#/displaying/unix -timestamp /

     
    moment().unix();
    
        
    10
    2015-03-06 00: 33: 36Z
    1. Bunun UNIX döneminden bu yana saniye (milisaniye değil) verdiğini unutmayın. Milisaniye istiyorsanız, moment().valueOf() kullanın. Cevabımı gör.
      2015-07-14 08: 33: 29Z

    Bunu yazarkenen iyi cevap 9 yaşında ve o zamandan beri çok şey değişti - en azından, hack olmayan bir çözüm için neredeyse evrensel desteğimiz var:

     
    Date.now()
    

    Bazı eski (pre9 öncesi) tarayıcılarda bunun bozulmayacağından kesinlikle emin olmak istiyorsanız, bunun gibi bir çekin arkasına koyabilirsiniz:

     
    const currentTimestamp = (!Date.now ? +new Date() : Date.now());
    

    Bu, dönemin zamanından beri elbette saniye değil milisaniyeyi döndürür.

    Tarihin MDN Belgeleri.     

    9
    2017-12-14 10: 09: 55Z

    daha basit bir yol:

     
    var timeStamp=event.timestamp || new Date().getTime();
    
        
    8
    2013-10-26 03: 51: 22Z
    1. event nedir?
      2015-06-06 17: 30: 55Z
    2. event'un nereden geldiğini öğrenin. Cevap yazmak yerine çözme şeklinizi daha iyi açıklamanız gerekir. Lütfen!
      2016-09-22 22: 54: 34Z
    3. Yeni Date () Nesnesini yazmak üzereydim. Günlüğü konsolda tutabilir (yeni Date ()) ve ardından yeni Date () altındaki ilgili yöntemleri gözden geçirebilirsiniz nesne /işlev
      2018-01-18 00: 37: 46Z

    bazen xmlhttp çağrıları için nesnelere ihtiyacım var, bu yüzden böyle yaparım.

     
    timestamp : parseInt(new Date().getTime()/1000, 10)
    
        
    6
    2014-04-24 06: 46: 40Z
    1. Daha da kısa: new Date().getTime()/1000|0 ama yavaş ve kirli
      2014-09-26 13: 53: 17Z
    2. Yeni Date () Nesnesini yazmak üzereydim. Günlüğü konsolda tutabilir (yeni Date ()) ve ardından yeni Date () altındaki ilgili yöntemleri gözden geçirebilirsiniz nesne /işlev
      2018-01-18 00: 37: 52Z
kaynak yerleştirildi İşte