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


4014

JavaScript'te nasıl zaman damgası alabilirim?

Unix zaman damgasına benzer bir şey , yani geçerli saati ve tarihi temsil eden tek bir sayı. Sayı veya dize olarak.


JS'de 64bit zaman damgası nasıl alınır?
Alexander Mills

@AlexanderMills JavaScript 64 bit tam sayıları desteklemediğinden, iki adet 32 ​​bit tam sayı almanız gerekir. Başka bir soru sorun.
wizzwizz4

Yanıtlar:


4913

Kısa ve Şık:

+ new Date()

Benzeri tekli bir işleç nesnedeki yöntemi plustetikler ve zaman damgasını döndürür (herhangi bir değişiklik yapmadan).valueOfDate

Detaylar:

Neredeyse tüm mevcut tarayıcılarda Date.now()UTC zaman damgasını milisaniye olarak almak için kullanabilirsiniz ; bunun dikkate değer bir istisnası IE8 ve öncesi'dir ( uyumluluk tablosuna bakın ).

Bununla birlikte, bunun için kolayca bir şim yapabilirsiniz:

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

Zaman damgasını saniyeler içinde almak için şunları kullanabilirsiniz:

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

Veya alternatif olarak şunları kullanabilirsiniz:

Date.now() / 1000 | 0

Bu biraz daha hızlı, aynı zamanda daha az okunabilir olmalıdır (ayrıca bu cevaba bakınız ).

Date.now()(Uyumluluk şim ile) kullanmanızı tavsiye ederim . Biraz daha iyi çünkü daha kısa ve yeni bir Datenesne yaratmıyor . Ancak, bir şim ve maksimum uyumluluk istemiyorsanız, zaman damgasını milisaniye olarak almak için "eski" yöntemi kullanabilirsiniz :

new Date().getTime()

Hangi sonra bu gibi saniye dönüştürebilirsiniz:

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

Ayrıca valueOfyukarıda gösterdiğimiz yöntemi 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());


11
Dikkate değer başka bir istisna node.js'dir. Buraya düğümden aynısını yapmak için Google'dan geldim
Milan Babuškov

57
2038 Yılı problemindenDate.now() / 1000 | 0 muzdarip olmayacak mısınız? new Date('Jan 1, 2039') / 1000 | 0 == -2117514496
gengkev

3
hatta Math.floor kullanmadan ..~~(Date.now() / 1000)
Matej

14
@ MilanBabuškov ama node.js destekliyorDate.now()
OrangeDog

51
+new DataAkıllı olsa da, diğer geliştiriciler tarafından okunamaz. Date.now()daha nettir ve herkesin neler olduğunu bilmesini sağlar.
Harry Sadler

514

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

+new Date

Bunu da seviyorum, çünkü aynı derecede kısa ve modern tarayıcılarla uyumlu ve 500'den fazla kişi bunun daha iyi olduğuna karar verdi:

Date.now()

636
Bu seçenek kötü bir fikir. Kolayca göz ardı edilir, yazım hatası gibi görünür ve gerçekte bir dil yan etkisine dayanır. Kötü kod görüyorum.
inanutshellus

10
@Billy Hatırladığım gibi, önerilen iki çözümde zaman damgasını her biri 1M kez hesapladım ve ortalama çalışma zamanını hesapladım. Firefox ve Chrome'da çalıştırdım, getTime her iki tarayıcıda da daha hızlıydı. Bununla birlikte, (marjinal olarak) daha yavaş olsa bile seçerdim dedi new Date().getTime(). Neyse ki benim için, daha hızlı çözüm zaten okunaklı çözüm!
inanutshellus

11
@ FabrícioMatté ile aynı fikirde. Tekli operatör davranışı ilkel olmayabilir, ancak eğer bunu fırçalamadıysanız, birçok takımda etkili bir şekilde çalışmayı beklemeyin.
Jason T Featheringham

9
@Niklaus Çünkü başka bir dizeye bitiştiriyorsunuz. Bu durumda new Date().toString()denir.
kirb

7
meraktan +operatörün dize gibi çıkması için ne yapıyor?
zadubz

276

JavaScript çağdan bu yana geçen milisaniye sayısı ile çalışır, diğer diller ise saniyeler içinde çalışır. Milisaniye ile çalışabilirsiniz, ancak PHP demek için bir değer iletir geçmez, PHP yerel işlevleri muhtemelen başarısız olacaktır. Bu yüzden milisaniyeyi değil, her zaman saniyeleri kullandığımdan emin olmak için.

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

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

Bu, çağdan beri milisaniye verir (Unix zaman damgası değil):

var milliseconds = new Date().getTime();

4
PHP kendisini microtime () işleviyle kullandığından milisaniye ile iyi çalışmalıdır.
Nico Burns

5
Mikrotime () mevcutken, php'deki zamanla ilgili işlevlerin çoğu zaman damgasının milisaniye değil saniye cinsinden olmasını bekler. Dahası, microrotime (), ondalık kısmın bir saniyenin kesirleri (mikrosaniyeye doğru) olduğu bir float (true değerini geçerseniz) döndürürken, newDate (). GetTime (), yalnızca milisaniye saydığı bir int döndürür. çağ. Örneğin (php), floor (microtime (true)) çağrısı yapacak olsanız, bu, mikro veya milisaniye değil saniye cinsinden çağrı süresi () ile etkili bir şekilde aynı olacaktır. Yukarıdaki gibi 1000'e bölmek buna en kolay çözümdür.
gregghz

49
Yuvarlak yerine zemin kullanın. 700 ms hala tam değil
Anagmate

Unix timestampvs Seconds since the Epoch. Bu ikisinin aynı anlama gelmesi gerekmez mi?
Mudiaga Ejenavi

147
var time = Date.now || function() {
  return +new Date;
};

time();

6
Neden || Şebeke? Date.now () tüm tarayıcılarda mevcut değil mi?
Chris Noe

67
Date.now () JavaScript 1.5 sürümündendir ve IE 8'de desteklenmez.
Søren Løvborg

9
Date.now yöntemini destekleyecek şekilde güncellenmemiş motorlar, aşağıdaki şim kullanılarak yokluğunda çalışabilir: if (! Date.now) {Date.now = Şimdi işlev () {return + (new Date); }; }
Görev Aradı Aronsson

veya(Date.now||function(){return +new Date})();

130

Bu cevapta açıklamaları olan birden fazla çözüm sağlıyorum. Bir şey belirsizse soru sormaktan çekinmeyin
PS: ne yazık ki birisi kredi vermeden bunu en iyi cevapla birleştirdi.


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

Date.now() /1000 |0

Uyarı : Bu belki 2038 yılında kırmak ve bunu yaparsanız negatif sayıları dönmek |0sihirli. Kullan Math.floor()o zaman bunun yerine

Math.floor() çözüm:

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

Bu cevabın altındaki yorumlardan Derek 朕 會 功夫 tarafından yapılan bazı asosyal alternatif :

new Date/1e3|0

Çok amaçlı Date.now()çalışmaya başlayın :

IE'de Çalıştırmak için bu (dan polyfill yapabileceği MDN'yi ):

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

Yıl / gün / gün / gün ışığından yararlanma zamanını umursamıyorsanız, bunu kesip 2038'den sonra kullanabilirsiniz:

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

Nasıl görüneceğinin bazı çıktıları:

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 yaz saatini kıracak, ancak ne inşa edeceğinize bağlı olarak, int32'nin 2038'de kırılmasından sonra zaman damgalarında ikili işlemler yapmanız gerekiyorsa bu sizin için yararlı olabilir.

Bu ayrıca negatif değerler döndürür, ancak yalnızca kodunuzu çalıştırdığınız bilgisayarın kullanıcısı PC'sinin saatini en az bir önceki yılın 31 Aralık tarihine değiştirirse.


Kodun ilk çalıştırıldığı andan itibaren göreceli zamanı bilmek istiyorsanız, şöyle bir şey kullanabilirsiniz:

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

JQuery kullanıyorsanız $.now(), dahili olarak aynı şeyi yaptığından , çoklu dolguyu geçersiz kılan jQuery'nin Dokümanlarında açıklandığı gibi kullanabilirsiniz $.now():(new Date).getTime()

JQuery'nin sürümünden memnunsanız , kendim bulamadığım için bu cevabı iptal etmeyi düşünün .


Şimdi ne işe yaradığına dair küçük bir açıklama |0:

Sağlayarak |, yorumlayıcıya ikili VEYA işlemi yapmasını söylersiniz. Bit işlemleri, ondalık sonucu Date.now() / 1000bir tamsayı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 sonuçla aynı sonucu verir, Math.floor()ancak daha az kod kullanır.

Yine de uyarılmalıdır: 64 bitlik bir ikiliyi 32 bitlik bir tam sayıya dönüştürecektir. Bu, büyük sayılarla uğraşırken bilgi kaybına neden olacaktır. 32 bit tamsayı taşması nedeniyle 2038'den sonra zaman damgaları kırılacaktır.


Hakkında daha fazla bilgi Date.nowiçin şu bağlantıyı izleyin: Date.now()@ MDN


12
| 0, Math.floor () öğesine benzer, çünkü biraz işlemdir (şamandıralarla çalışmaz). normalde Math.floor () 'dan bile daha hızlıdır, çünkü bir işlev çağrısı değildir, yerel bir javascript operatörüdür.
GottZ


@Christophe bunu neden düşünüyorsun? IE düzeltme nedeniyle? Bu bölüm dışında bence oldukça basit ve özelleştirilebilir.
GottZ

5
çoklu dolgular / şimler karmaşık değildir. 9 farklı tarayıcı sürümünü desteklemenin ve endüstrinin hangi standartları benimsediklerini ve hangilerini oluşturduklarını seçmeye karar vermelerinin bir sonucudur.
rlemon

8
Referans için alabileceğiniz en kompakt new Date/1e3|0.
Derek 朕 會 功夫

88
var timestamp = Number(new Date()); // current time as number

61

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

var timestamp = $.now();

(ayrıca (new Date).getTime()ifadeyi uygular )

REF: http://api.jquery.com/jQuery.now/


2
jQuery, farklı JavaScript API'leri ile tarayıcılar arası uyumluluk sorunlarıyla da ilgilenir.
Henry Heleine

4
@VisioN Node.js'de zaman damgaları yapmanın bir yolunu aradım. Stackoverflow bir javascript soru buldum ve jQuery, bu yardımcı olmaz bir cevap alıyorum. Javascript ve jQuery iki şeydir. Dışarıdaki her javascript çerçevesine cevap verirsek, yığın akışında Q / A felsefesine aykırı olan sonsuz sayıda cevapla karşılaşırız. Ayrıca: i.stack.imgur.com/Ledgt.gif : D
Pierre Arlaud

5
@VisioN Javascript'in bir tarayıcıda kullanılması gerektiğini kim söyledi?
Pierre Arlaud

5
@PierreArlaud Ve bu sorunun sadece NodeJS ile ilgili olduğunu kim söyledi?
VisioN

2
@KingRider parseIntSonuçta ortaya çıkan değer her zaman bir olacağından , buna gerek yoktur Number.
VisioN

46

console.log(new Date().valueOf()); // returns the number of milliseconds since the epoch


4
Bu eşittir +new Date.. :)
19h

8
sadece yapmakDate.now()
Orlando

@Orlando diğer cevapları gör, şu anki sorun () tarayıcı desteği
Christophe

@Christophe sadece basit bir çoklu dolgu yapın, developer.mozilla.org/tr-TR/docs/Web/JavaScript/Reference/…
Orlando

4
@Orlando tam olarak, sadece Date.now () yapmayın
Christophe

43

Diğer seçeneklere ek olarak, bir tarih biçimi ISO istiyorsanız, doğrudan alabilirsiniz

console.log(new Date().toISOString());


Sorulan soru ile bir tamsayı döndürmez!
alexventuraio

@AlexVentura dize dateformat ISO ile bir tarih nesnesi başlatabilir ve aralarında çıkarabilirsiniz. Örneğin:new Date("2017-05-04T07:11:28.940Z") - new Date("2017-05-04T07:11:14.092Z")
Joaquinglezsantos

41

Sadece toplamak için, Javascript'te bir zaman damgası dizesi döndürmek için 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;
}

11
OP bir tamsayı zaman damgası soruyor; bu, zamanın dizgi temsilidir.
Brad Koch

3
"Unix'in zaman damgasına benzer, yani şimdiki zamanı temsil eden tek bir sayı"
Brad Koch

Zaman göstermek için bir kod vardı ama Avustralya'nın bazı bölümleri tam tarih gösterdi, bu komut dosyası onu parçalamak ve doğru görüntülemek bana yardımcı oldu. (Bunun için +1)
Syfer

40

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

JavaScript'te zaman damgasının istemci bilgisayar setine bağlı olduğuna dikkat edin, bu yüzden% 100 doğru zaman damgası değildir. En iyi sonucu almak için sunucu tarafından zaman damgasını almanız gerekir .

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

Date.now(); //return 1495255666921

MDN'de aşağıda belirtilmiştir:

Date.now () yöntemi, 1 Ocak 1970 00:00:00 UTC'den bu yana geçen milisaniye sayısını döndürür.
Now () yöntemi Date'nin statik bir yöntemi olduğundan, bunu her zaman Date.now () olarak kullanırsınız.

ES5'in altında bir sürüm kullanıyorsanız, Date.now();çalışmaz ve kullanmanız gerekir:

new Date().getTime();

29

Henüz görmediğim biri

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

Henüz görmediğim bir diğeri

var _ = require('lodash'); // from here https://lodash.com/docs#now
_.now();

1
Date.now() /1000 |0aynı şeyi yapar ve daha önce cevaplanmıştır
GottZ

3
iyi. Ben kesinlikle Math.floor()içine düzenlenmiş ama sadece aynı etkisi olduğunu açıklığa kavuşturmak için |0. Sana ya da hiçbir şeye zarar vermek istemedim. Sadece cevabınızın bir şekilde var olduğunu söylemek istedim. verilen tüm cevaplara bakıldığında zemini bir şekilde fark eden bazıları vardır.
GottZ

Tüm Lodash kütüphanesini sadece kullanmak _.now()için içe aktarmanın biraz abartılı olduğunu düşünüyorum . Sadece kullanmanız gereken Lodash işlevselliğini içe aktarmanızı öneririm ( bu durumda NPM'de _.now () ), ancak paketlerini sadece kullanmak için kullanımdan kaldırmışlardırDate.now() .
18:03

27

Date.getTime()Yöntem, küçük bir çimdik ile kullanılabilir:

GetTime yöntemi tarafından döndürülen değer, 1 Ocak 1970 00:00:00 UTC değerinden bu yana geçen milisaniye sayısıdır.

floorGerekirse Unix zaman damgasını almak için sonucu 1000'e bölün :

(new Date).getTime() / 1000

Date.valueOf()Usul fonksiyonel olarak eşdeğer olan Date.getTime()mümkün aynı sonuçları elde etmek için tarih nesnesinde aritmetik işlemler kullanmak yapar. Bence bu yaklaşım okunabilirliği etkiler.


7
Parantezlere ihtiyacınız yok:new Date().getTime() / 1000
Ry-

14
Onlara ihtiyacınız yok, ancak kodu daha okunabilir hale getiriyorlar (IMHO). Lezzet meselesi sanırım.
johndodo

Hatta gerekmez ()sonra new Dateve .getTime()yana /irade yine bir sayıya tarihi nesne attı.
Derek 朕 會 功夫

25

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

Doğrudan getTime()çağrıyı atlamayı ve işlev | 0yerine geçmeyi düşünün Math.floor(). Hatırlamakta fayda var 1E3, bunun için daha kısa bir eşdeğerdir 1000(E harfi 1E3sabit olarak belirtmek için küçük harften daha çok tercih edilir ).

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

var ts = new Date / 1E3 | 0;

console.log(ts);


3
@ "Math.floor(new Date().getTime()/1000)".length == 37; "new Date/1E3|0".length == 14; 37 -14 = 23 bayt;
Valentin Podkamennyi

@MatthieuCharbonnier Okunamaz olan tam olarak nedir? Bölme işareti, 1E3, boru veya sıfır? Lütfen yukarıdaki cevabımda kod snippet'ine bakın.
Valentin Podkamennyi

1
@Valentin Neredeyse hiçbir fayda sağlamayacak şekilde basit kodu küçülüyor / karmaşıklaştırıyorsunuz. Bunu yapmak için bir neden göremiyorum. Code Golf'te değiliz!
Matthieu Charbonnier

@MatthieuCharbonnier, Karmaşık bir şey yok, sadece temel sözdizimi ve operatörler var. Ana nokta kısa, net ve anlaşılır bir kod yazmaktır.
Valentin Podkamennyi

2
Değiştirirken nasıl @Valentin beni açıklayınız Math.floor()tarafından |0"açık ve anlaşılır" bu kodu yapıyor. Değiştirerek 1 byte kaydetmek için noktasıdır bana ne açıklayın 1000tarafından 1E3. Bu gülünç. Kötü kod görüyorum.
Matthieu Charbonnier

24

Verim

Bugün - 2020.04.23 Seçilen çözümler için testler yapıyorum. Chrome 81.0, Safari 13.1, Firefox 75.0 üzerinde MacOs High Sierra 10.13.6 üzerinde test yaptım

Sonuçlar

  • Çözüm Date.now()(E), Chrome ve Safari'de en hızlı ve Firefox'ta ikinci hızlıdır ve bu hızlı çapraz tarayıcı çözümü için muhtemelen en iyi seçimdir
  • performance.now()Şaşırtıcı olan Çözüm (G), Firefox'taki diğer çözümlerden 100 kat daha hızlı, ancak Chrome'da en yavaş
  • C, D, F çözümleri tüm tarayıcılarda oldukça yavaş

resim açıklamasını buraya girin

ayrıntılar

Chrome kelimesi için sonuçlar

resim açıklamasını buraya girin

BURADA makinenizde test yapabilirsiniz

Testlerde kullanılan kod aşağıdaki snippet'te sunulmuştur


performance.now()Damga açısından en doğru olması gerektiği için test ettiyseniz ilgilenirim .
SamsonTheBrave

@SamsonTheBrave Yorumunuz için teşekkürler - Cevabı
güncelliyorum

Harika, güncellemen için teşekkürler! Firefox'ta şimdi performansta bir fark gördüğünüzü fark ettim. Bu privacy.reduceTimerPrecision, sonuçları en yakın milisaniyeye yuvarlayan Firefox'un bir sonucu olabilir . Ayrıca varsayılan olarak etkindir ancak devre dışı bırakılabilir. developer.mozilla.org/tr-TR/docs/Web/API/Performance/now
SamsonTheBrave

22

Kullanmanızı tavsiye ederim moment.js. UNIX döneminden bu yana geçen milisaniye sayısını elde etmek için,

moment().valueOf()

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

moment().unix()

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

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

Bunu her zaman yaparım. Hiçbir cinas amaçlanan.

moment.jsTarayıcıda kullanmak için:

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

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


21

Mikrosaniye çözünürlüklü bir zaman damgası için performance.now:

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

Bu sadece verimi 1436140826653.139verirken, örneğin verimi verebilir .Date.now1436140826653


21

Sadece kullanabilirsiniz

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

geçerli zaman damgasını almak için. Ekstra bir şey yapmaya gerek yok.


20

Zaman damgası biçiminde oluşturmak için basit bir işlev: aa / gg / yy ss: mi: 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())));
}

10
@ b123400 - İşte Lisp versiyonu bulunuyor: (new (chain (-date) (to-i-s-o-string))).
Inaimathi

20

// 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>


16

Date.now'u desteklemeyen tarayıcılar, bunu geçerli tarih saatini almak için kullanabilirsiniz:

currentTime = Date.now() || +new Date()

3
(Yorumumu yeniden silme) Kodunuzda bir sorun var: önce desteğini kontrol etmek yerine Date.now yöntemini çalıştırır. Daha eski tarayıcılarda Date.now bir işlev hatası değildir .
Salman A

Belki daha iyi bir alternatif assert bir üçlü operatörü kullanmak olacaktır Date.nowçağırmak denemeden önce, aslında (bir işlev ve bir) bulunmaktadır: currentTime = typeof Date.now === "function" ? Date.now() : +new Date().
18:14

14

Bu bir çözüm var: unixtime damgasını js'de tim'e dönüştüren bunu deneyin

var a = new Date(UNIX_timestamp*1000);
var hour = a.getUTCHours();
var min = a.getUTCMinutes();
var sec = a.getUTCSeconds();

14

Geçen gün JQuery Cookie'nin kaynak kodundan belirli bir Date nesnesini Unix zaman damgasına dönüştürmenin gerçekten harika bir yolunu öğrendim .

İşte bir örnek:

var date = new Date();
var timestamp = +date;

Yeni Date () Nesnesini yazmak üzereydim. Günlüğü (new Date ()) konsolda tutabilir ve yeni Date () nesnesi / işlevi altındaki ilgili yöntemler aracılığıyla gözden geçirebilirsiniz
sg28 0

14

Node.js'de bir zaman damgası oluşturmak için temel bir yol istiyorsanız, bu iyi çalışır.

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

Ekibimiz bunu bir localhost ortamında önbellek bozmak için kullanıyor. Çıktı, tarafından oluşturulan zaman damgasının /dist/css/global.css?v=245521377bulunduğu yerdir .245521377hrtime()

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.


13

Bu işe yarıyor 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

Günlüğe kaydetme amaçlıysa , ISOString'i kullanabilirsiniz

new Date().toISOString()

"2019-05-18T20: 02: 36.694Z"




9

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

Date.now()

Bunun bazı eski (ie9 öncesi) tarayıcılarda kırılmayacağından kesinlikle emin olmak istiyorsanız, aşağıdaki gibi bir çekin arkasına koyabilirsiniz:

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

Bu, devir süresinden bu yana saniyeler değil, milisaniye dönecektir.

Date.now'daki MDN Belgeleri


8

daha basit bir yol:

var timeStamp=event.timestamp || new Date().getTime();

Nereden eventgeldiğini biliyorum . Bir cevap yazmak yerine, çözme şeklinizi daha iyi açıklamanız gerekir. Lütfen!
alexventuraio

Yeni Date () Nesnesini yazmak üzereydim. Günlüğü (new Date ()) konsolda tutabilir ve sonra yeni Date () nesnesi / işlevi altındaki ilgili yöntemler aracılığıyla gözden geçirebilirsiniz
sg28 0
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.