Jak uzyskać aktualną datę w JavaScript?
new Date()
zwraca bieżącą godzinę , a nie bieżącą datę . To rozróżnienie ma znaczenie, jeśli próbujesz porównać go z inną datą, która nie ma elementu czasu (tj. Jest o północy).
Jak uzyskać aktualną datę w JavaScript?
new Date()
zwraca bieżącą godzinę , a nie bieżącą datę . To rozróżnienie ma znaczenie, jeśli próbujesz porównać go z inną datą, która nie ma elementu czasu (tj. Jest o północy).
Odpowiedzi:
Służy new Date()
do generowania nowego Date
obiektu zawierającego bieżącą datę i godzinę.
var today = new Date();
var dd = String(today.getDate()).padStart(2, '0');
var mm = String(today.getMonth() + 1).padStart(2, '0'); //January is 0!
var yyyy = today.getFullYear();
today = mm + '/' + dd + '/' + yyyy;
document.write(today);
To da ci dzisiejszą datę w formacie mm / dd / rrrr.
Po prostu zmień today = mm +'/'+ dd +'/'+ yyyy;
format na dowolny.
01
, 02
...,09
Date.prototype.toLocaleDateString()
metoda jest bardziej elastycznym rozwiązaniem. Jest częścią JavaScript od ECMAScript 5.1 i jest dobrze obsługiwany przez wiecznie zielone przeglądarki. MDN:toLocaleDateString()
var utc = new Date().toJSON().slice(0,10).replace(/-/g,'/');
document.write(utc);
Użyj tej replace
opcji, jeśli zamierzasz ponownie użyć utc
zmiennej, np. new Date(utc)
Ponieważ Firefox i Safari nie rozpoznają daty z myślnikami.
toUTCString()
zwraca jako utc datetime.
moment( new Date().toJSON().slice(0, 10) )
AKTUALIZACJA! , Przewiń w dół
Jeśli chcesz czegoś prostego dla 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>
AKTUALIZACJA UBBERA Po długim zwlekaniu w końcu GitHubbed i zaktualizowałem to o końcowe rozwiązanie, z którego korzystałem dla siebie. Wprowadzono nawet kilka zmian w ostatniej chwili, aby był słodszy! Jeśli szukasz starego jsFiddle, zobacz to .
Ta aktualizacja jest dostępna w 2 wersjach, wciąż stosunkowo niewielkich, choć nie tak małych jak moja powyższa, oryginalna odpowiedź. Jeśli chcesz bardzo małe, idź z tym.
Uwaga: To jest nadal mniej rozdęty niż moment.js. Chociaż moment.js jest fajny, imo, ma zbyt wiele świeckich metod, które wymagają momentu nauki, jakby był językiem. Mój tutaj używa tego samego wspólnego formatu co PHP: data .
Flavor 1
new Date().format(String)
My Personal Fav. Znam tabu, ale świetnie działa na obiekcie Date. Po prostu bądź świadomy wszelkich innych modów, które możesz mieć w obiekcie Data.
// use as simple as
new Date().format('m-d-Y h:i:s'); // 07-06-2016 06:38:34
Flavor 2
dateFormat(Date, String)
Bardziej tradycyjna metoda „wszystko w jednym”. Ma wszystkie możliwości poprzedniego, ale jest wywoływany za pomocą metody z parametrami daty.
// use as simple as
dateFormat(new Date(), 'm-d-Y h:i:s'); // 07-06-2016 06:38:34
BONUS Flavour (wymaga jQuery)
$.date(Date, String)
Zawiera znacznie więcej niż tylko prostąformat
opcję. Rozszerza podstawowy obiekt Date i obejmuje metody takie jakaddDays
. Aby uzyskać więcej informacji, zobacz Git .
W tym modzie znaki formatu są inspirowane przez PHP: date . Aby uzyskać pełną listę, zobacz mój plik README
Ten mod ma również znacznie dłuższą listę gotowych formatów. Aby użyć gotowego formatu, wystarczy wprowadzić jego nazwę klucza.dateFormat(new Date(), 'pretty-a');
Jak możesz zauważyć, możesz użyć podwójnego, \
aby uciec od postaci.
Najkrótszy możliwy.
Aby uzyskać format taki jak „2018-08-03”:
let today = new Date().toISOString().slice(0, 10)
console.log(today)
Aby uzyskać format taki jak „8/3/2018”:
let today = new Date().toLocaleDateString()
console.log(today)
Możesz również przekazać ustawienia regionalne jako argument, na przykład toLocaleDateString("sr")
itp.
Jeśli chcesz tylko daty bez informacji o czasie, użyj:
var today = new Date();
today.setHours(0, 0, 0, 0);
document.write(today);
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
Jeśli szukasz bardziej szczegółowej kontroli nad formatami dat, zdecydowanie polecam sprawdzenie momentjs. Wspaniała biblioteka - i tylko 5 KB. http://momentjs.com/
Możesz użyć 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>
moment().format("L")
szanować aktualne ustawienia regionalne.
var d = (new Date()).toString().split(' ').splice(1,3).join(' ');
document.write(d)
Aby podzielić go na kroki:
(new Date()).toString()
daje „Pt 28 czerwca 2013 15:30:18 GMT-0700 (PDT)”
(new Date()).toString().split(' ')
dzieli powyższy ciąg na każdą spację i zwraca tablicę w następujący sposób: [„Pt”, „Jun”, „28”, „2013”, „15:31:14”, „GMT-0700”, „(PDT)” ]
(new Date()).toString().split(' ').splice(1,3).join(' ')
pobiera drugą, trzecią i czwartą wartość z powyższej tablicy, łączy je spacjami i zwraca ciąg „28 czerwca 2013 r.”
Date().split(' ').splice(1,3).join(' ')
Działa to za każdym razem:
var now = new Date();
var day = ("0" + now.getDate()).slice(-2);
var month = ("0" + (now.getMonth() + 1)).slice(-2);
var today = now.getFullYear() + "-" + (month) + "-" + (day);
console.log(today);
var date = new Date().toLocaleDateString("en-US");
Możesz także wywołać metodę toLocaleDateString
z dwoma parametrami:
var date = new Date().toLocaleDateString("en-US", {
"year": "numeric",
"month": "numeric"
});
new Date().toLocaleDateString("de-de")
robi dla mnie lewę.
Czystsza, prostsza wersja:
new Date().toLocaleString();
Wynik różni się w zależności od lokalizacji użytkownika :
2/27/2017, 9:15:41 AM
Jeśli jesteś zadowolony z formatu RRRR-MM-DD, spełni to zadanie.
new Date().toISOString().split('T')[0]
2018-03-10
Możesz użyć biblioteki Date.js, która rozszerza obiekt Date, dzięki czemu możesz mieć metodę .today ().
Możesz uzyskać bieżącą datę wywołania metody statycznej teraz w następujący sposób:
var now = Date.now()
odniesienie:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/now
var dtToday = new Date(date.now);
Odpowiedź Varuna nie uwzględnia TimezoneOffset . Oto wersja, która:
var d = new Date()
new Date(d.getTime() - d.getTimezoneOffset() * 60000).toJSON().slice(0, 10) // 2015-08-11
Są TimezoneOffset
minuty, podczas gdy konstruktor daty zajmuje milisekundy, a zatem pomnożenie przez 60000
.
Najkrótsza odpowiedź to: new Date().toJSON().slice(0,10)
new Date().toDateString();
Wynik:
„Śr. 03 lutego 2016”
Zwróci toISOString()
tylko aktualny czas UTC, a nie czas lokalny. Musimy ustalić datę za pomocą funkcji „.toString ()”, aby uzyskać datę w yyyy-MM-dd
formacie podobnym do
document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('T')[0]);
Aby uzyskać datę i godzinę w yyyy-MM-ddTHH:mm:ss
formacie
document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0]);
Aby uzyskać datę i godzinę w yyyy-MM-dd HH:mm:ss
formacie
document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0].replace('T',' '));
Jeśli chcesz prostego DD/MM/YYYY
formatu, właśnie wymyśliłem to proste rozwiązanie, chociaż nie zawiera ono poprzedzających zer.
var d = new Date();
document.write( [d.getDate(), d.getMonth()+1, d.getFullYear()].join('/') );
new Date().toISOString().slice(0,10);
też by działał
NAJNOWSZA EDYCJA: 23.08.19 Biblioteka date-fns działa podobnie jak moment.js, ale ma DUŻO mniejszą powierzchnię. Pozwala ci wybrać, które funkcje chcesz uwzględnić w projekcie, dzięki czemu nie musisz kompilować całej biblioteki, aby sformatować dzisiejszą datę. Jeśli minimalna biblioteka stron trzecich nie jest opcją dla twojego projektu, popieram zaakceptowane rozwiązanie przez Samuela Meddowsa do góry.
Zachowanie historii poniżej, ponieważ pomogło kilku osobom. Ale, dla przypomnienia, jest dość zuchwały i może złamać się bez ostrzeżenia, podobnie jak większość rozwiązań w tym poście
EDYCJA 2/7/2017 Jednowierszowe rozwiązanie JS:
tl; dr
var todaysDate = new Date(Date.now()).toLocaleString().slice(0,3).match(/[0-9]/i) ? new Date(Date.now()).toLocaleString().split(' ')[0].split(',')[0] : new Date(Date.now()).toLocaleString().split(' ')[1] + " " + new Date(Date.now()).toLocaleString().split(' ')[2] + " " + new Date(Date.now()).toLocaleString().split(' ')[3];
edge, ff latest, & chrome returntodaysDate = "2/7/2017"
„działa” * w IE10 +
Wyjaśnienie
Dowiedziałem się, że IE10 i IE Edge działają nieco inaczej… idź. z new Date(Date.now()).toLocaleString()
wejściem
Zwraca IE10:
"Tuesday, February 07, 2017 2:58:25 PM"
Mógłbym napisać dużą długą funkcję i FTFY. Ale naprawdę powinieneś użyć moment.js do tego. Mój skrypt po prostu to oczyszcza i daje rozwiniętą tradycyjną notację amerykańską:> todaysDate = "March 06, 2017"
Zwraca IE EDGE:
"2/7/2017 2:59:27 PM"
Oczywiście nie mogło być tak łatwo. Ciąg daty Edge ma niewidoczne znaki „•” między każdym widocznym. Więc nie tylko będziemy teraz sprawdzać, czy pierwszy znak jest liczbą, ale pierwsze 3 znaki, ponieważ okazuje się, że dowolny pojedynczy znak z całego zakresu dat będzie ostatecznie kropką lub ukośnikiem w pewnym momencie. Aby uprościć sprawę , wystarczy .slice () pierwsze trzy znaki (mały bufor dla przyszłych shenaniganów), a następnie sprawdź liczby. Należy prawdopodobnie zauważyć, że te niewidoczne kropki mogą potencjalnie pozostać w twoim kodzie. Być może skopałbym to, jeśli masz większe plany niż tylko wydrukowanie tego ciągu na swój widok.
∴ zaktualizowany one-liner:
var todaysDate = new Date(Date.now()).toLocaleString().slice(0,3).match(/[0-9]/i) ? new Date(Date.now()).toLocaleString().split(' ')[0].split(',')[0] : new Date(Date.now()).toLocaleString().split(' ')[1] + " " + new Date(Date.now()).toLocaleString().split(' ')[2] + " " + new Date(Date.now()).toLocaleString().split(' ')[3];
To do bani czytać. Co powiesz na:
var dateString = new Date(Date.now()).toLocaleString();
var todaysDate = dateString.slice(0,3).match(/[0-9]/i) ? dateString.split(' ')[0].split(',')[0] : dateString.split(' ')[1] + " " + dateString.split(' ')[2] + " " + dateString.split(' ')[3];
ORYGINALNA ODPOWIEDŹ
Mam dla ciebie liniówkę:
new Date(Date.now()).toLocaleString().split(', ')[0];
i [1]
da ci porę dnia.
Możesz tego użyć
<script>
function my_curr_date() {
var currentDate = new Date()
var day = currentDate.getDate();
var month = currentDate.getMonth() + 1;
var year = currentDate.getFullYear();
var my_date = month+"-"+day+"-"+year;
document.getElementById("dateField").value=my_date;
}
</script>
HTML jest
<body onload='return my_curr_date();'>
<input type='text' name='dateField' id='dateField' value='' />
</body>
Jeśli używasz jQuery. Wypróbuj tę jedną wkładkę:
$.datepicker.formatDate('dd/mm/yy', new Date());
Oto konwencja formatowania daty
Oto odwołanie do jpickera datepicker
Prostym sposobem na osiągnięcie tego (biorąc pod uwagę bieżącą strefę czasową, korzystając z formatu ISO rrrr-mm-dd) jest:
let d = new Date().toISOString().substring(0,19).replace("T"," ") // "2020-02-18 16:41:58"
Zwykle jest to dość uniwersalny format daty i w razie potrzeby można go przekonwertować na czystą wartość daty:
Date.parse(d); // 1582044297000
O co w tym wszystkim chodzi .. Najczystszym sposobem na to jest
var currentDate=new Date().toLocaleString().slice(0,10);
3/4/2018,
, lepiej użyć new Date().toJSON().slice(0,10)
.
.slice(0,10)
To może ci pomóc
var date = new Date();
console.log(date.getDate()+'/'+(date.getMonth()+1)+'/'+date.getFullYear());
Spowoduje to wydrukowanie bieżącej daty w formacie dd / MM / rrrr
Dobrze jest uzyskać sformatowaną datę
let date = new Date().toLocaleDateString("en", {year:"numeric", day:"2-digit", month:"2-digit"});
console.log(date);
Myślę, że to stare pytanie, ale najprostszym sposobem byłoby:
var date = new Date();
var TimeStamp = date.toLocaleString();
function CurrentTime(){
alert(TimeStamp);
}
Spowoduje to pobranie bieżącego czasu, przekazanie go do ciągu na podstawie lokalizacji, a następnie można wywołać funkcję CurrentTime, aby wyświetlić czas. Byłby to dla mnie najbardziej skuteczny sposób na uzyskanie znacznika czasu na coś.
var currentTime = new Date();