Kaip gausite laiko žymę javascript'e?

Kaip gauti laiko žymę javascript'e?

Kažkas panašaus į Unix laiko žymę, ty vieną numerį, kuris atspindi dabartinį laiką ir datą. Arba kaip skaičius arba kaip eilutė.

3545
21 окт. rinkinys pupeno 21 okt. 2008-10-21 12:29 '08, 12:29, 2008-10-21 12:29
@ 37 atsakymai
  • 1
  • 2

Trumpas ir prašmatnus:

 + new Date() 

Nepriklausomas operatorius, pvz., valueOf plus nurodo „ valueOf metodą Date objekte ir grąžina laiko žymą (be jokių pakeitimų).

Išsami informacija:

Beveik visose šiuolaikinėse naršyklėse galite naudoti Date.now() kad gautumėte UTC laiko žymę milisekundėmis ; Pažymėtina išimtis yra IE8 ir ankstesnės versijos (žr. Suderinamumo lentelę ).

Tam lengvai galite padaryti tarpinę:

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

Jei norite gauti laiko žymę sekundėmis , galite naudoti:

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

Arba galite naudoti:

 Date.now() / 1000 | 0 

Kuris turėtų būti šiek tiek greitesnis, bet taip pat mažiau suprantamas (taip pat žr. Šį atsakymą ).

Aš rekomenduoju naudoti Date.now() (su suderinamumu). Tai šiek tiek geriau, nes ji yra trumpesnė ir nesukuria naujo Date objekto. Tačiau, jei nenorite naudoti PWM ir maksimalaus suderinamumo, galite naudoti „senąjį“ metodą, kad gautumėte laiko žymę milisekundėmis :

 new Date().getTime() 

Ką jūs galite konvertuoti į sekundes, pvz .:

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

Taip pat galite naudoti „ valueOf metodą, kurį parodėme anksčiau:

 new Date().valueOf() 

Laiko žymė milisekundėmis

4389
21 окт. atsakymas duotas daveb 21 okt. 2008-10-21 12:32 '08, 12:32 2008-10-21 12:32

Man patinka, nes tai maža

 +new Date 
border=0

Man taip pat patinka, nes jis yra toks pat trumpas ir suderinamas su šiuolaikinėmis naršyklėmis, ir daugiau nei 500 žmonių balsavo, kad būtų geriau:

 Date.now() 
457
18 февр. atsakymas pateikiamas xer0x 18 vas . 2011-02-18 03:33 '11 at 3:33 2011-02-18 03:33

„JavaScript“ veikia su milisekundėmis nuo epochos, o dauguma kitų kalbų dirba su sekundėmis. Galite dirbti su milisekundėmis, bet kai tik praeisite vertę, pasakykite PHP, tikėtina, kad gimtosios PHP funkcijos nepavyks. Todėl įsitikinkite, kad visada naudoju sekundes, o ne milisekundes.

Tai suteiks jums Unix laiko žymę (sekundėmis):

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

Tai suteiks jums milisekundes nuo eros (ne Unix laiko žymos):

 var milliseconds = new Date().getTime(); 
246
12 мая '11 в 1:27 2011-05-12 01:27 atsakymas duotas Daithí gegužės 12 d., 11 val. 1:27 2011-05-12 01:27
 var time = Date.now || function() { return +new Date; }; time(); 
133
21 окт. atsakymas suteiktas Staale spalio 21 d 2008-10-21 13:05 '08, 13:05 val. 2008-10-21 13:05

Šiame atsakyme pateikiu keletą sprendimų su aprašymais. Nesivaržykite užduoti klausimus, jei kas nors neaišku.
PS: deja, kažkas įpilė į viršutinį atsakymą, o ne duoklę.


Greitas ir purvinas sprendimas:

 Date.now() /1000 |0 

Įspėjimas : jis gali sulūžti 2038 m. Ir grąžinti neigiamus skaičius, jei naudojate magiją |0 Vietoj to naudokite „ Math.floor() .

Math.floor() sprendimas:

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

Dereko nuobodu alternatyva 功夫 會 功夫 yra paimta iš žemiau pateikto atsakymo komentarų:

 new Date/1e3|0 

Date.now() kad atliktumėte „ Date.now() darbą:

Jei norite, kad jis veiktų IE, galite tai padaryti („Polyfill“ iš „ MDN“ ):

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

Jei nerūpi savaitės / vasaros laiko / dienos, galite jį pašalinti ir naudoti po 2038 m .:

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

Keletas išvadų, kaip ji atrodys:

 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 ) 

Žinoma, tai sulaužys vasaros laiką, tačiau, priklausomai nuo to, ką sukuriate, jums gali būti naudinga, jei jums reikia atlikti dvejetainius veiksmus su laiko žymomis po int32 pertraukų 2038 metais.

Ji taip pat grąžins neigiamas reikšmes, bet tik tuo atveju, jei kompiuterio naudotojas, kuriame paleisite kodą, savo kompiuterio laikrodį keičia bent iki praėjusių metų gruodžio 31 d.


Jei tik norite sužinoti santykinį laiką nuo pirmojo kodo vykdymo, galite naudoti kažką panašaus:

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

Jei naudojate „jQuery“, galite naudoti $.now() kaip aprašyta „ jQuery“ dokumentuose, o tai reiškia, kad polifilis yra pasenęs, todėl $.now() viduje $.now() daro tą patį: (new Date).getTime()

Jei esate tiesiog patenkintas jQuery versija, apsvarstykite atsakymą į šį klausimą, nes aš pats jo neradau.


Dabar šiek tiek paaiškinkite, ką |0 :

Teikdami | Pasakykite vertėjui atlikti dvejetainį OR operaciją. Bitų operacijoms reikia absoliučių skaičių, kurie dešimtainį rezultatą sukelia iš Date.now()/1000 į sveikąjį skaičių.

Dešimtainės frakcijos pašalinamos per šią konversiją, kuri sukelia tą patį rezultatą, kaip naudojant Math.floor() bet naudojant mažiau kodo.

Tačiau būkite atsargūs: 64 bitų dvigubas konvertuoja į 32 bitų sveikąjį skaičių. Tai sukels informacijos praradimą dirbant su dideliais skaičiais. Laiko žymos bus nutrauktos po 2038 m. Dėl 32 bitų sveikojo skaičiaus perpildymo.


Norėdami gauti daugiau informacijos apie Date.now atlikite šią nuorodą: Date.now() @MDN

110
12 июля '12 в 10:15 2012-07-12 10:15 atsakymą pateikė „ GottZ“ liepos 12, 12 d., 10:15 val. 2012-07-12 10:15
 var timestamp = Number(new Date()); // current time as number 
77
21 окт. atsakymas duotas aemkei spalis 21 2008-10-21 16:00 '08 4:00 val. 2008-10-21 16:00

jQuery pateikia savo metodą, kaip gauti laiko žymę:

 var timestamp = $.now(); 

(be to, ji tiesiog įgyvendina frazę (new Date).getTime() )

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

56
15 марта '13 в 17:19 2013-03-15 17:19 atsakymą pateikė „ VisioN “ kovo 15 d. 13 val. 2013-03-15 17:19

39
30 апр. Atsakyti Tom Viner Bal. 30 2009-04-30 19:53 '09, 19:53, 2009-04-30 19:53

Tiesiog pridėkite čia funkciją, kad grąžintumėte laiko žymos eilutę į „Javascript“. Pavyzdys: 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; } 
38
21 сент. atsakymas suteikiamas 21 meilės sep. 2012-09-21 22:12 '12 10:12 val. 2012-09-21 22:12

Be kitų parametrų, jei norite gauti ISO formato formatą, galite jį gauti tiesiogiai

35
29 янв. Joaquinglezsantos atsakė į 29 Jan 2016-01-29 18:08 '16 at 18:08 2016-01-29 18:08

Vienas, kad aš dar nemačiau

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

Kitas aš dar nemačiau

 var _ = require('lodash'); // from here https://lodash.com/docs#now _.now(); 
27
31 марта '14 в 11:18 2014-03-31 11:18 Atsakymą pateikė Belldandu kovo 31 d. 14, 11:18 2014-03-31 11:18

Data , vietinis „JavaScript“ objektas, yra būdas gauti visą laiką.

Tiesiog būkite atsargūs javascript, laiko žymos priklauso nuo klientų kompiuterių rinkinio, todėl jis nėra 100% tikslus. Norėdami gauti geriausią rezultatą, iš serverio turite gauti laiko žymę.

Bet kokiu atveju norėčiau naudoti vanilę. Tai yra įprastas būdas tai padaryti JavaScript:

 Date.now(); //return 1495255666921 

MDN vadinamas žemiau:

Metodas Date.now () grąžina milisekundžių, praėjusių nuo 1970 m. Sausio 1 d., 00:00:00 UTC, skaičių.
Kadangi dabar () yra statinis datos metodas, visada naudokite jį kaip Date.now ().

Jei naudojate versiją, esančią žemiau ES5, Date.now(); neveikia ir turite naudoti:

 new Date().getTime(); 
27
20 мая '17 в 7:49 2017-05-20 07:49 Atsakymą Alireza pateikė gegužės 17 d., 17 val

Kodas Math.floor(new Date().getTime()/1000) gali būti sutrumpintas iki new Date/1E3 | 0 new Date/1E3 | 0 new Date/1E3 | 0 new Date/1E3 | 0

Pabandykite praleisti tiesiai getTime() ir naudodami | 0 | 0 | 0 | 0 kaip funkcija Math.floor() . Taip pat gerai prisiminti, kad 1E3 yra trumpesnis ekvivalentas 1000 (didžioji raidė E yra pageidautina mažesnėms 1E3 , kad būtų nurodyta 1E3 kaip konstanta).

Dėl to gausite:

24
14 окт. atsakymas Valentinui spalio 14 d. 2015-10-14 19:41 '15, 19:41, 2015-10-14 19:41

Date.getTime() metodas gali būti naudojamas su mažu nustatymu:

„GetTime“ metodu grąžinama vertė yra milisekundžių skaičius nuo 1970 m. Sausio 1 d. 00:00:00 UTC.

Rezultatą padalinkite į 1000, kad gautumėte Unix, floor laiko žymę, jei reikia:

 (new Date).getTime() / 1000 

Date.valueOf() metodas yra funkciniu požiūriu lygiavertis „ Date.valueOf() , kuris leidžia naudoti aritmetinius operatorius datos objektui pasiekti vienodus rezultatus. Mano nuomone, šis požiūris turi įtakos skaitymui.

24
03 мая '12 в 12:02 2012-05-03 12:02 atsakymas duotas Salmanui A gegužės 12 d. 12:02 2012-05-03 12:02

Čia yra paprasta funkcija sukurti laiko žymę tokiu formatu: mm / dd / yy hh: 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()))); } 
19
21 мая '13 в 12:22 2013-05-21 12:22 atsakymas duotas giliai, gegužės 21 d. 13 val. 12:22 2013-05-21 12:22

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
19
29 сент. atsakymas pateikiamas mėlynių0xff 29 sep. 2015-09-29 16:55 '15 at 16:55 2015-09-29 16:55

Galite naudoti tik

19
16 марта '16 в 8:45 2016-03-16 08:45 atsakymą pateikė Jitendra Pawar, kovo 16 d., 16 d., 8:45, 2016-03-16 08:45

Labai rekomenduoju naudoti moment.js . Norėdami gauti milisekundžių skaičių iš UNIX epochos, atlikite

 moment().valueOf() 

Norėdami gauti sekundžių skaičių nuo UNIX, atlikite

 moment().unix() 

Taip pat galite konvertuoti taip:

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

Aš visą laiką tai darau. Bauda nėra skirta.

Naudokite moment.js naršyklėje:

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

Daugiau informacijos, įskaitant kitus būdus, kaip įdiegti ir naudoti „MomentJS“, rasite jų dokumentuose.

19
14 июля '15 в 11:29 2015-07-14 11:29 atsakymas pateikiamas „ FullStack“ liepos 14 d. 15 val. 11:29 2015-07-14 11:29

Laiko žymos skiriamoji geba mikrosekundėmis.

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

Tai gali būti, pavyzdžiui, 1436140826653.139 ir Date.now suteikia tik 1436140826653 .

17
06 июля '15 в 3:01 2015-07-06 03:01 atsakymas pateikiamas iterio liepos 15 d. 15 d. 3:01 2015-07-06 03:01

Šiandien yra 2018.06.27. Aš suteiksiu laiko palyginimą gryniems js sprendimams. Tai gali būti naudinga žmonėms, kurie nori gauti / matuoti laiką JS lengvai ir efektyviai (pavyzdžiui, realaus laiko programoms, pvz., Modeliavimui, žaidimams ir pan.)

Išbandyta „MacO High Sierra“ 10.13.3 „Chrome“ 67.0.3396.99 (64 bitų versija), „Safari 11.0.3“ (13604.5.6), „Firefox 59.0.2“ (64 bitų versija). Toliau pateiktame paveikslėlyje parodysiu greičiausios naršyklės rezultatus („Safari“):

2019

„Date.now“ nepalaiko jokių naršyklių, galite naudoti, kad gautumėte dabartinį laiką:

 currentTime = Date.now() || +new Date() 
15
09 мая '13 в 9:53 2013-05-09 09:53 atsakymą pateikė mr.boyfox gegužės 09, 13 d. 9:53 2013-05-09 09:53

Jis turi sprendimą: kuris konvertuoja unikalaus etiketę į tim į js, pabandykite tai

 var a = new Date(UNIX_timestamp*1000); var hour = a.getUTCHours(); var min = a.getUTCMinutes(); var sec = a.getUTCSeconds(); 
13
01 июля '13 в 9:47 2013-07-01 09:47 atsakymą pateikė Anoop PS liepos 1 d. 13 val. 9:47 2013-07-01 09:47

Jei jums reikia pagrindinio būdo sukurti laiko žymę „Node.js“, tai gerai veikia.

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

Mūsų komanda tai naudoja, kad apsaugotų talpyklą vietinėje aplinkoje. Išėjimas yra /dist/css/global.css?v=245521377 , kur 245521377 yra hrtime() sukurtas laiko hrtime() .

Tikiuosi, kad tai padės, pirmiau minėti metodai gali veikti, bet aš pastebėjau, kad tai paprasčiausias mūsų poreikių sprendimas „Node.js.“

13
29 мая '15 в 16:40 2015-05-29 16:40 atsakė Kevinui Leariui gegužės 15 dieną, 15:40 2015-05-29 16:40

Aš sužinojau tikrai kietą būdą konvertuoti šį datos objektą į „Unix“ laiko žymą iš „ jQuery“ slapukų šaltinio kodo kitą dieną.

Štai pavyzdys:

 var date = new Date(); var timestamp = +date; 
12
11 марта '15 в 12:52 2015-03-11 12:52 Atsakymą pateikė George , kovo 11 d., 15 val. 12:52 2015-03-11 12:52

Atrodo, kad jis veikia.

 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); } }; 
12
09 окт. Ron Royston atsakymas spalio 09 d 2015-10-09 05:03 '15 at 5:03 2015-10-09 05:03

Naudojant „ lodash“ ir „ _.now naudokite _.now .

 var timestamp = _.now(); // in milliseconds 
12
30 марта '15 в 11:40 2015-03-30 11:40 atsakymą Muhammedas Reda pateikė kovo 15 d. 15 val. 11.40 2015-03-30 11:40

„Moment.js“ gali abstrakti iš didelio skausmo dirbant su „Javascript“ datomis.

Žr. Http://momentjs.com/docs/#/displaying/unix-timestamp/

 moment().unix(); 
9
06 марта '15 в 3:33 2015-03-06 03:33 atsakymas pateikiamas Rimiano kovo 06 d. 15 d. 3:33 2015-03-06 03:33

Šio rašymo metu pirmasis atsakymas buvo 9 metai, ir nuo to laiko daug pasikeitė - ne mažiau svarbu, kad mes beveik visuotinai palaikome ne hacker sprendimą:

 Date.now() 

Jei norite būti visiškai tikri, kad ji nebus pertrauka į senovinę (iki ie9) naršyklę, galite ją už tikrinti, pavyzdžiui:

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

Tai, žinoma, sugrįš milisekundes nuo eros laiko.

MDN dokumentacija data.now

9
14 дек. Atsakymas pateiktas Olemak gruodžio 14 d. 2017-12-14 13:09 '17, 13:09 PM 2017-12-14 13:09

paprastesnis būdas:

 var timeStamp=event.timestamp || new Date().getTime(); 
7
26 окт. Atsakymas, kurį pateikė Vicky Gonsalves, spalio 26 d 2013-10-26 06:51 '13, 6:51, 2013-10-26 06:51

Kartais man reikia to xmlhttp skambučių objektuose, todėl man tai patinka.

 timestamp : parseInt(new Date().getTime()/1000, 10) 
5
24 апр. Atsakyti DevC 24 Bal. 2014-04-24 09:46 '14 ne 9:46 2014-04-24 09:46
  • 1
  • 2

Kiti klausimai apie „ žymų arba Ask a question