Pytanie Jak uzyskać aktualną datę w JavaScript?


Jak uzyskać aktualną datę w JavaScript?


1685
2017-10-07 11:39


pochodzenie


var currentTime = new Date(); - Hendrik
Zobacz dokumentacja obiektu Date. Ma przykłady. - Quentin
to ci pomoże tizag.com/javascriptT/javascriptdate.php
new Date() zwraca bieżący czasnie obecny data. Rozróżnienie ma znaczenie, jeśli próbujesz porównać je z inną datą, która nie ma elementu czasu (tj. Jest o północy). - Steve Bennett
użyj momentJs, ta lib jest złota dla programistów. - RBoschini


Odpowiedzi:


Posługiwać się new Date() wygenerować nowy Date obiekt zawierający bieżącą datę i godzinę.

var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0!
var yyyy = today.getFullYear();

if(dd<10) {
    dd = '0'+dd
} 

if(mm<10) {
    mm = '0'+mm
} 

today = mm + '/' + dd + '/' + yyyy;
document.write(today);

To da ci dzisiejszą datę w formacie mm / dd / rrrr.

Po prostu zmień today = mm +'/'+ dd +'/'+ yyyy; do dowolnego formatu.


2014
2018-02-08 04:42



jak zdobyć godzinę i minuty - lbennet
dziękuję za kod ... ale to, czego jeszcze nie rozumiem, to linia, jeśli (dd <10) {dd = '0' + dd} ... dlaczego <10? z tego, co rozumiem z kodu, jest to, że jeśli znak dnia jest mniejszy niż 2, po prostu dodaj poprzedzające 0 przed dniem .., ale dlaczego 10? - imin
@imin: ponieważ mniej niż 2 znaki oznaczają 1 znak ... a wszystko poniżej 10 (od 1 do 9) to 1 znak, więc będziemy mieć 01, 02, ..., 09 - zfm
@MounaCheikhna - Jak moglibyśmy być w roku 999? - nnnnnn
Zamień się na miesiąc i datę, jeśli nie jesteś w Ameryce Północnej. - Mark Micallef


var utc = new Date().toJSON().slice(0,10).replace(/-/g,'/');
document.write(utc);

Użyj replace opcja, jeśli zamierzasz ponownie użyć utc zmienna, taka jak new Date(utc), ponieważ Firefox i Safari nie rozpoznają daty z myślnikami.


341
2017-09-29 14:13



Wygląda dobrze, aby mogło być prawdziwe. Jakieś wady tego? - Norbert
Nie sądzę :) Wygląda całkiem prosto! - Varun Natraaj
toJSON () zwraca jako wartość czasu utc - Andy
Nie bierze pod uwagę TimezoneOffset. W czasie testów szukałem "teraz" i dostałem "wczoraj". stackoverflow.com/questions/13646446/... - mickmackusa
Idealny. To najczystszy sposób na zrobienie tego, co widzę tutaj. Działa dobrze w MomentJS dla "Dzisiaj, nie teraz" moment( new Date().toJSON().slice(0, 10) ) - Kyle Hotchkiss


ZAKTUALIZOWANE!, Przewiń w dół

Jeśli chcesz coś prostego do użytkownika końcowego ... Also, fixed a small suffix issue in the first version below. Now properly returns suffix.

var objToday = new Date(),
	weekday = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'),
	dayOfWeek = weekday[objToday.getDay()],
	domEnder = function() { var a = objToday; if (/1/.test(parseInt((a + "").charAt(0)))) return "th"; a = parseInt((a + "").charAt(1)); return 1 == a ? "st" : 2 == a ? "nd" : 3 == a ? "rd" : "th" }(),
	dayOfMonth = today + ( objToday.getDate() < 10) ? '0' + objToday.getDate() + domEnder : objToday.getDate() + domEnder,
	months = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'),
	curMonth = months[objToday.getMonth()],
	curYear = objToday.getFullYear(),
	curHour = objToday.getHours() > 12 ? objToday.getHours() - 12 : (objToday.getHours() < 10 ? "0" + objToday.getHours() : objToday.getHours()),
	curMinute = objToday.getMinutes() < 10 ? "0" + objToday.getMinutes() : objToday.getMinutes(),
	curSeconds = objToday.getSeconds() < 10 ? "0" + objToday.getSeconds() : objToday.getSeconds(),
	curMeridiem = objToday.getHours() > 12 ? "PM" : "AM";
var today = curHour + ":" + curMinute + "." + curSeconds + curMeridiem + " " + dayOfWeek + " " + dayOfMonth + " of " + curMonth + ", " + curYear;

document.getElementsByTagName('h1')[0].textContent = today;
<h1></h1>

UBBER UPDATE Po długim odwlekaniu, w końcu GitHubbed i zaktualizowałem to ostatecznym rozwiązaniem, którego używałem dla siebie. Wprowadzono nawet kilka drobnych zmian, aby uczynić go słodszym! Jeśli szukasz starego jsFiddle, zobacz to.

Ta aktualizacja jest dostępna 2 smaki, wciąż stosunkowo niewielkie, choć nie tak małe jak moja powyżej, oryginalna odpowiedź. Jeśli chcesz bardzo małe, idź z tym.
 Również Uwaga: To jest wciąż mniej nadęty niż moment.js. Podczas gdy moment.js jest fajny, imo, ma wiele świeckich metod, które wymagają momentu uczenia się, jakby był językiem. Mój tutaj używa tego samego wspólnego formatu, co PHP: data.

Szybkie linki

Smak 1 new Date().format(String)   Mój osobisty ulubiony. Znam tabu, ale działa wspaniale w obiekcie Date. Po prostu pamiętaj o wszelkich innych modyfikacjach, które możesz mieć do obiektu Date.

//  use as simple as
new Date().format('m-d-Y h:i:s');   //  07-06-2016 06:38:34

Smak 2 dateFormat(Date, String)   Bardziej tradycyjna metoda all-in-one. Ma wszystkie możliwości poprzedniego, ale jest wywoływana za pomocą metody z parametrem Date.

//  use as simple as
dateFormat(new Date(), 'm-d-Y h:i:s');  //  07-06-2016 06:38:34

BONUS Flavor (wymaga jQuery) $.date(Date, String)   To zawiera znacznie więcej niż tylko proste format opcja. Rozszerza podstawowy obiekt Date i zawiera takie metody, jak addDays. Aby uzyskać więcej informacji, zobacz Git.

W tym modykurze znaki formatu są inspirowane przez PHP: data. Aby uzyskać pełną listę, zobacz mój README

Ten mod ma również znacznie dłuższą listę gotowych formatów. Aby użyć gotowego formatu, po prostu wprowadź jego nazwę klucza. dateFormat(new Date(), 'pretty-a');

  • 'złożony'
    • "commonLogFormat" == 'd / M / Y: G: i: s'
    • "exif" == 'Y: m: d G: i: s'
    • "isoYearWeek" == "Y \\ WW"
    • "isoYearWeek2" == 'Y - \\ WW'
    • "isoYearWeekDay" == 'Y \\ WWj'
    • "isoYearWeekDay2" == 'Y - \\ WW-j'
    • "mySQL" == 'Y-m-d h: i: s'
    • "postgreSQL" == "Y.z"
    • "postgreSQL2" == "Yz"
    • "mydło" == "Y-m-d \\ TH: i: s.u"
    • "soap2" == "Y-m-d \\ TH: i: s.uP"
    • "unixTimestamp" == '@U'
    • "xmlrpc" == 'Ymd \\ TG: i: s'
    • "xmlrpcCompact" == "Ymd \\ tGis"
    • "wddx" == 'Y-n-j \\ TG: i: s'
  • "stałe"
    • "AMERYKAŃSKI" == "F j Y"
    • "AMERICANSHORT" == 'm / d / Y'
    • "AMERICANSHORTWTIME" == 'm / d / Y h: i: sA'
    • "ATOM" == "Y-m-d \\ TH: i: sP"
    • "COOKIE" == 'l d-M-Y H: i: s T'
    • "EUROPEAN" == 'j F Y'
    • "EUROPEANSHORT" == "d.m.Y"
    • "EUROPEANSHORTWTIME" == 'd.m.Y H: i: s'
    • "ISO8601" == "Y-m-d \\ TH: i: sO"
    • "LEGALNY" == 'j F Y'
    • "RFC822" == 'D d M y H: i: s O'
    • "RFC850" == 'l d-M-y H: i: s T'
    • "RFC1036" == 'D d M y H: i: s O'
    • "RFC1123" == 'D d M Y H: i: s O'
    • "RFC2822" == 'D d M Y H: i: s O'
    • "RFC3339" == 'Y-m-d \\ TH: i: sP'
    • "RSS" == 'D d M Y H: i: s O'
    • "W3C" == 'Y-m-d \\ TH: i: sP'
  • 'ładny'
    • "pretty-a" == 'g: i.sA l jS \\ o \\ f F Y'
    • "pretty-b" == 'g: iA l jS \\ o \\ f F Y'
    • "pretty-c" == 'n / d / Y g: iA'
    • "pretty-d" == 'n / d / Y'
    • "pretty-e" == 'F jS - g: ia'
    • "pretty-f" == 'g: iA'

Jak możesz zauważyć, możesz użyć podwójnego \ uciec z postaci.



187
2018-02-10 14:33



@KamranAhmed Prawie 2 lata i 40+ głosów później, powiedziałbym, że wysiłek był tego wart. Lol. Od tego czasu rozszerzyłem tę klasę osobiście, ale nie przesłałem, ponieważ uważałem, że większość ludzi użyłaby tej innej wtyczki js, którą widzę jako polecaną, ale myślę, że powinienem uczynić ją bardziej "publiczną" i dodać ją tutaj. - SpYk3HH
Moment.js jest teraz tym, czego możesz używać w dzisiejszych czasach - Christian Stewart
Kciuki za wysiłek i lekkość! - Mike Devenney
Powyżej jest literówka (która zajęła mi trochę czasu), używa zmiennej "today" w linii: "dayOfMonth = today +" - user1435707
"dzisiaj + (objToday.getDate () <10)? 0 '+ objToday.getDate () + domEnder: objToday.getDate () + domEnder" - JS to głupi język. - Alex S


Jeśli chcesz tylko datę bez informacji o czasie, użyj:

var today = new Date();
    today.setHours(0, 0, 0, 0);

document.write(today);


115
2017-09-02 06:14



To wydaje się być jedyną odpowiedzią, która faktycznie odpowiada na pytanie. Wszyscy inni odpowiadają, jak sformatować datę jako ciąg. - Inrego
++ najlepsza odpowiedź w tym wątku - Pawel Gradecki
W rzeczy samej. To jest poprawna odpowiedź na problem. - tkarls


Spróbuj tego:

var currentDate = new Date()
var day = currentDate.getDate()
var month = currentDate.getMonth() + 1
var year = currentDate.getFullYear()
document.write("<b>" + day + "/" + month + "/" + year + "</b>")

Wynik będzie podobny

15/2/2012

90
2018-02-15 08:48





Najkrótszy możliwy. 

Aby otrzymać format "2018-08-03":

let today = new Date().toISOString().slice(0, 10)

console.log(today)

Aby otrzymać format "8/3/2018":

let today = new Date().toLocaleDateString()

console.log(today)

Ponadto możesz przejść widownia jako argument, na przykład toLocaleDateString("sr")itp.


62
2018-03-10 16:30





Jeśli szukasz bardziej szczegółowej kontroli nad formatami dat, zdecydowanie zalecamy sprawdzenie momentów. Wspaniała biblioteka - i tylko 5KB. http://momentjs.com/


57
2017-12-12 01:03



To najlepsza liba, którą znalazłem! - andho
Obsługuje lokalizację jak urok. - Risadinha
W dzisiejszych czasach używamy date-fns - traktuje daty jako niezmienne (Moment mutuje daty), jest szybsza i jest modułowa (wystarczy zaimportować to, czego potrzebujesz). - Luke Williams
Tak, nie mogłem się zgodzić. - d3cypher


Możesz użyć pliku moment.js: http://momentjs.com/

var m = moment().format("DD/MM/YYYY");

document.write(m);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>


45
2017-08-16 11:56



Najlepsza odpowiedź, MomentJs wygląda niesamowicie. - nottinhill
Chwila jest przesadna, bo właśnie dostaję aktualną datę. - Dan Dascalescu
Lub moment().format("L") respektować bieżące ustawienia regionalne. - Dunc
@DanDascalescu Właściwie, podstawowa specyfikacja Javascript dla DateTime jest zła. - Todd