Iets vergelijkbaar met Unix’ tijdstempel, dat is een enkel getal dat de huidige tijd en datum vertegenwoordigt. Ofwel als een getal of een tekenreeks.
Antwoord 1, autoriteit 100%
Kort & Snazzy:
+ new Date()
Een unaire operator zoals plus
activeert de methode valueOf
in het Date
-object en retourneert het tijdstempel (zonder enige wijziging).
p>
Details:
In bijna alle huidige browsers kun je Date.now()
om de UTC-tijdstempel in millisecondente krijgen; een opmerkelijke uitzondering hierop is IE8 en eerder (zie compatibiliteitstabel) .
Je kunt hier echter gemakkelijk een shim voor maken:
if (!Date.now) {
Date.now = function() { return new Date().getTime(); }
}
Om de tijdstempel in secondente krijgen, kun je het volgende gebruiken:
Math.floor(Date.now() / 1000)
U kunt ook het volgende gebruiken:
Date.now() / 1000 | 0
Dat zou iets sneller moeten zijn, maar ook minder leesbaar.
(ook zie dit antwoordof ditmet verdere uitleg voor bitsgewijze operators).
Ik zou aanraden om Date.now()
te gebruiken (met compatibiliteitsschijf). Het is iets beter omdat het korter is & maakt geen nieuw Date
object aan. Als u echter geen shim & maximale compatibiliteit, kunt u de “oude” methode gebruiken om de tijdstempel in millisecondente krijgen:
new Date().getTime()
Wat je dan als volgt naar seconden kunt converteren:
Math.round(new Date().getTime()/1000)
En je kunt ook de valueOf
methode gebruiken die we hierboven hebben laten zien:
new Date().valueOf()
Tijdstempel in milliseconden
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());
Antwoord 2, autoriteit 11%
Ik vind dit leuk, omdat het klein is:
+new Date
Ik vind dit ook leuk, omdat het net zo kort is en compatibel is met moderne browsers, en meer dan 500 mensen hebben gestemd dat het beter is:
Date.now()
Antwoord 3, autoriteit 6%
JavaScript werkt met het aantal milliseconden sinds het tijdperk, terwijl de meeste andere talen met de seconden werken. Je zou met milliseconden kunnen werken, maar zodra je een waarde doorgeeft om PHP te zeggen, zullen de native PHP-functies waarschijnlijk mislukken. Dus om zeker te zijn gebruik ik altijd de seconden, niet de milliseconden.
Dit geeft je een Unix-tijdstempel (in seconden):
var unix = Math.round(+new Date()/1000);
Dit geeft je de milliseconden sinds het tijdperk (niet Unix-tijdstempel):
var milliseconds = new Date().getTime();
Antwoord 4, autoriteit 3%
var time = Date.now || function() {
return +new Date;
};
time();
Antwoord 5, autoriteit 3%
Ik bied meerdere oplossingen met beschrijvingen in dit antwoord. Stel gerust vragen als er iets onduidelijk is
Snelle en vuile oplossing:
Date.now() /1000 |0
Waarschuwing: het kanbreken in 2038 en negatieve getallen retourneren als je de
|0
magie uitvoert. Gebruik in plaats daarvanMath.floor()
tegen die tijd
Math.floor()
oplossing:
Math.floor(Date.now() /1000);
Een nerdy alternatief door Derek 朕會功夫uit de reacties onder dit antwoord:
new Date/1e3|0
Vul invullen om Date.now()
werkend te krijgen:
Om het werkend te krijgen in IE kun je dit doen (Polyfill van MDN):
if (!Date.now) {
Date.now = function now() {
return new Date().getTime();
};
}
Als het jaar/dag van de week/zomertijd u niet interesseert, moet u dit onthouden voor datums na 2038:
Bitgewijze bewerkingen veroorzaken het gebruik van 32-bits gehele getallen in plaats van 64-bits drijvende komma.
U moet het correct gebruiken als:
Math.floor(Date.now() / 1000)
Als je alleen de relatieve tijd wilt weten vanaf het moment dat de code voor het eerst werd doorlopen, zou je zoiets als dit kunnen gebruiken:
const relativeTime = (() => {
const start = Date.now();
return () => Date.now() - start;
})();
Als je jQuery gebruikt, kun je $.now()
gebruiken zoals beschreven in jQuery’s Docswaardoor de polyfill overbodig wordt omdat $.now()
intern hetzelfde doet: (new Date).getTime()
Als je gewoon tevreden bent met de versie van jQuery, overweeg dan om ditantwoord te geven, aangezien ik het niet heb gevonden het zelf.
Nu een kleine uitleg van wat |0
doet:
Door |
op te geven, vertelt u de tolk een binaire OF-bewerking uit te voeren.
Bitbewerkingen vereisen absolute getallen die het decimale resultaat van Date.now() / 1000
in een geheel getal veranderen.
Tijdens die conversie worden decimalen verwijderd, wat resulteert in een resultaat dat vergelijkbaar is met wat het gebruik van Math.floor()
zou opleveren.
Wees echter gewaarschuwd:het zal een 64 bit double converteren naar een 32 bit integer.
Dit zal leiden tot informatieverlies bij het omgaan met grote aantallen.
Tijdstempels worden verbroken na 2038 vanwege 32-bits integeroverloop, tenzij Javascript in de strikte modus naar 64-bits integers wordt verplaatst.
Voor meer informatie over Date.now
volg deze link: Date.now()
@ MDN
Antwoord 6, autoriteit 2%
var timestamp = Number(new Date()); // current time as number
Antwoord 7
jQuerybiedt zijn eigen methodeom de tijdstempel te krijgen:
var timestamp = $.now();
(bovendien implementeert het gewoon (new Date).getTime()
expressie)
REF:http://api.jquery.com/jQuery. nu/
Antwoord 8
Als u naast de andere opties een ISO-datumindeling wilt, kunt u deze direct verkrijgen
console.log(new Date().toISOString());
Antwoord 9
console.log(new Date().valueOf()); // returns the number of milliseconds since the epoch
Antwoord 10
Datum, een eigen objectin JavaScript is de manier waarop we alle gegevens over tijd verkrijgen.
Wees voorzichtig in JavaScript, de tijdstempel is afhankelijk van de clientcomputerset, dus het is geen 100% nauwkeurige tijdstempel. Om het beste resultaat te krijgen, moet u de tijdstempel van de server-sidekrijgen.
Hoe dan ook, mijn voorkeur gaat uit naar het gebruik van vanille. Dit is een gebruikelijke manier om het in JavaScript te doen:
Date.now(); //return 1495255666921
In MDN wordt het als volgt vermeld:
De methode Date.now() retourneert het aantal milliseconden dat is verstreken sinds
1 januari 1970 00:00:00 UTC.
Omdat now() een statische methode van Date is, gebruik je het altijd als Date.now().
Als u een versie onder ES5 gebruikt, werkt Date.now();
niet en moet u het volgende gebruiken:
new Date().getTime();
Antwoord 11
Om op te tellen, hier is een functie om een tijdstempelreeks in Javascript te retourneren.
Voorbeeld: 15:06:38 uur
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;
}
Antwoord 12
Prestaties
Vandaag – 2020.04.23 voer ik tests uit voor gekozen oplossingen. Ik heb getest op MacOs High Sierra 10.13.6 op Chrome 81.0, Safari 13.1, Firefox 75.0
Conclusies
- Oplossing
Date.now()
(E) is de snelste in Chrome en Safari en de tweede snel in Firefox en dit is waarschijnlijk de beste keuze voor een snelle oplossing voor meerdere browsers - Oplossing
performance.now()
(G), wat verrassend is, is meer dan 100x sneller dan andere oplossingen in Firefox, maar het langzaamst in Chrome - Oplossingen C,D,F zijn vrij traag in alle browsers
Details
Resultaten voor chrome
U kunt HIER
een test uitvoeren op uw machine
De code die in tests wordt gebruikt, wordt weergegeven in het onderstaande fragment
Antwoord 13
Eentje die ik nog niet heb gezien
Math.floor(Date.now() / 1000); // current time in seconds
Een andere die ik nog niet heb gezien is
var _ = require('lodash'); // from here https://lodash.com/docs#now
_.now();
Antwoord 14
De Date.getTime()
methode kan worden gebruikt met een kleine aanpassing:
De waarde die wordt geretourneerd door de methode getTime is het aantal milliseconden
sinds 1 januari 1970 00:00:00 UTC.
Verdeel het resultaat door 1000 om de Unix-tijdstempel te krijgen, floor
indien nodig:
(new Date).getTime() / 1000
De Date.valueOf()
methode is functioneel equivalent aan Date.getTime()
, wat het mogelijk maakt om rekenkundige operatoren te gebruiken op date object om identieke resultaten. Naar mijn mening beïnvloedt deze benadering de leesbaarheid.
Antwoord 15
De code Math.floor(new Date().getTime() / 1000)
kan worden ingekort tot new Date / 1E3 | 0
.
Overweeg om getTime()
aanroep en gebruik | 0
als vervanging voor Math.floor()
functie.
Het is ook goed om te onthouden dat 1E3
een kortere equivalent is voor 1000
(hoofdletter E heeft de voorkeur boven kleine letters om 1E3
als constante aan te geven).
Als resultaat krijg je het volgende:
var ts = new Date / 1E3 | 0;
console.log(ts);
Antwoord 16
Voor een tijdstempel met een resolutie van microseconden zijn er performance.now
:
function time() {
return performance.now() + performance.timing.navigationStart;
}
Dit kan bijvoorbeeld 1436140826653.139
opleveren, terwijl Date.now
alleen 1436140826653
geeft.
Antwoord 17
Ik raad het gebruik van moment.js
ten zeerste aan. Om het aantal milliseconden sinds het UNIX-tijdperk te krijgen, doe je
moment().valueOf()
Als u het aantal seconden sinds het UNIX-tijdperk wilt zien, doet u
moment().unix()
Je kunt tijden ook als volgt omrekenen:
moment('2015-07-12 14:59:23', 'YYYY-MM-DD HH:mm:ss').valueOf()
Dat doe ik altijd. Geen woordspeling bedoeld.
Om moment.js
in de browser te gebruiken:
<script src="moment.js"></script>
<script>
moment().valueOf();
</script>
Voor meer details, inclusief andere manieren om MomentJS te installeren en te gebruiken, zie hun docs
Antwoord 18
U kunt alleen
. gebruiken
var timestamp = new Date().getTime();
console.log(timestamp);
Antwoord 19
Hier is een eenvoudige functie om een tijdstempel te genereren in het formaat: mm/dd/jj uu: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())));
}
Antwoord 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>
Antwoord 21
Alle browsers die Date.now niet ondersteunen, u kunt dit gebruiken om de huidige datum en tijd op te halen:
currentTime = Date.now() || +new Date()
Antwoord 22
Als het voor logboekdoeleinden is, kunt u ISOString
. gebruiken
new Date().toISOString()
“2019-05-18T20:02:36.694Z”
Antwoord 23
Deze heeft een oplossing: die unixtime-stempel naar tim in js converteert, probeer dit
var a = new Date(UNIX_timestamp*1000);
var hour = a.getUTCHours();
var min = a.getUTCMinutes();
var sec = a.getUTCSeconds();
Antwoord 24
Ik heb een heel coole manier geleerd om een bepaald Date-object naar een Unix-tijdstempel te converteren uit de broncode van JQuery-cookieonlangs.
Hier is een voorbeeld:
var date = new Date();
var timestamp = +date;
Antwoord 25
Als je een eenvoudige manier wilt om een tijdstempel in Node.js te genereren, dan werkt dit goed.
var time = process.hrtime();
var timestamp = Math.round( time[ 0 ] * 1e3 + time[ 1 ] / 1e6 );
Ons team gebruikt dit om de cache in een localhost-omgeving te breken. De uitvoer is /dist/css/global.css?v=245521377
waarbij 245521377
het tijdstempel is dat wordt gegenereerd door hrtime()
.
Hopelijk helpt dit, de bovenstaande methoden kunnen ook werken, maar ik vond dit de eenvoudigste aanpak voor onze behoeften in Node.js.
Antwoord 26
Dit lijkt te werken.
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);
}
};
Antwoord 27
Voor lodash en underscore Gebruikers, gebruiken _.now
.
var timestamp = _.now(); // in milliseconds
Antwoord 28
moment.js kan veel van de pijn abstraceren in het omgaan met JavaScript-data.
Zie: http://momentjs.com/docs/#/displaying/unix -Timestamp /
moment().unix();
Antwoord 29
Vanaf het schrijven is het topantwoord 9 jaar oud, en er is een partij sindsdien veranderd sindsdien – niet in de laatste plaats, we hebben in de buurt van Universal Support voor een niet-hacky-oplossing:
Date.now()
Als u absoluut zeker wilt zijn dat dit niet breken in een aantal oude (pre IE9) browser, kunt u het achter een cheque plaatsen, zoals SO:
const currentTimestamp = (!Date.now ? +new Date() : Date.now());
Hierdoor wordt de milliseconden aangetroffen sinds de tijd van de tijd, natuurlijk, niet seconden.
ANTWOORD 30
eenvoudiger:
var timeStamp=event.timestamp || new Date().getTime();