Jak uzyskać aktualną datę w JavaScript?

2686
Suresh 7 październik 2009, 15:39

28 odpowiedzi

Najlepsza odpowiedź

Użyj new Date(), aby wygenerować obiekt Nowy {X1}} zawierający 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);

Daje Ci dzisiejszą datę w formacie mm / dd / rrrr.

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

2942
mohshbool 14 marzec 2019, 22:47

Możesz to sprawdzić

var today = new Date();
today = parseInt(today.getMonth()+1)+'/'+today.getDate()+'/'+today.getFullYear()+"\nTime : "+today.getHours()+":"+today.getMinutes()+":"+today.getSeconds();
document.write(today);

I zobacz dokumentację dla konstruktora (). link

4
Akhil 11 sierpień 2015, 06:31

Jaka jest wielka sprawa z tym .. Najczystym sposobem na to jest

var currentDate=new Date().toLocaleString().slice(0,10);

4
ISONecroMAn 31 październik 2015, 19:39

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

4
Jayant Patil 17 sierpień 2016, 08:33

Myślę, że to stare pytanie, ale najprostszy sposób byłby następujący:

var date = new Date();
var TimeStamp = date.toLocaleString();

function CurrentTime(){
  alert(TimeStamp);
}

Spowoduje to złapanie bieżącego czasu, przekazać go do ciąg w oparciu o lokalizację, a następnie możesz wywołać funkcję bieżąco, aby wyświetlić czas. To byłoby, najskuteczniejszym sposobem na coś znacznika czasu.

3
Brock Davis 19 styczeń 2015, 22:21
var utc = new Date().toJSON().slice(0,10).replace(/-/g,'/');
document.write(utc);

Użyj opcji replace, jeśli zamierzasz ponownie wykorzystać zmienną utc, takich jak new Date(utc), jak Firefox i Safari nie rozpoznają daty z myślnikami.

458
Max 27 grudzień 2016, 18:47

najkrótszy możliwy.

Aby uzyskać format jak "2018-08-03":

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

console.log(today)

Aby uzyskać format jak "8/3/2018":

let today = new Date().toLocaleDateString()

console.log(today)

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

267
Damjan Pavlica 5 sierpień 2018, 21:09

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

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

document.write(today);
181
Michael 8 lipiec 2016, 15:23

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 taki jak

15/2/2012
107
Dan Atkinson 10 luty 2016, 11:20

Jeśli szukasz znacznie bardziej granulowanej kontroli nad formatami datami, dokładnie zalecam sprawdzenie momentów. Światła biblioteka - i tylko 5 KB. http://momentjs.com/

66
benjamin.keen 12 grudzień 2012, 01:03

Możesz użyć momentu.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>
55
Michael 8 lipiec 2016, 15:28
var d = (new Date()).toString().split(' ').splice(1,3).join(' ');

document.write(d)

Złamać go do kroków:

  1. (new Date()).toString() daje "piątek 28 2013 15:30:18 GMT-0700 (PDT)"

  2. (new Date()).toString().split(' ') dzieli powyższy ciąg na każdej przestrzeni i zwraca tablicę w następujący sposób: ["Pią", "Jun", "28", "2013", "15:31:14", "GMT-0700", "(PDT)"]

  3. (new Date()).toString().split(' ').splice(1,3).join(' ') Wykonuje drugą, trzecią i czwartej wartości z powyższej tablicy, dołącza do nich ze spacjami i zwraca ciąg "28 czerwca 2013"

54
Michael 8 lipiec 2016, 15:22

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);
48
roshan 28 marzec 2019, 07:01
var date = new Date().toLocaleDateString("en-US");

Ponadto możesz wywołać metodę toLocaleDateString z dwoma parametrami:

var date = new Date().toLocaleDateString("en-US", {
    "year": "numeric",
    "month": "numeric"
});

Artykuł na msdn. Więcej o tej metodzie na MDN.

46
falsarella 22 grudzień 2015, 17:18

Jeśli jesteś zadowolony z YYYY-MM-DD Format, to również wykonuje pracę.

new Date().toISOString().split('T')[0]

2018-03-10

28
Aung Htet 10 marzec 2018, 14:48

Możesz użyć Date.js biblioteka, która rozciąga obiekt daty, można zatem mieć metodę .Today ().

23
eomeroff 26 czerwiec 2012, 13:00

Możesz uzyskać bieżącą datę, zadzwoń teraz teraz metodę statyczną:

var now = Date.now()

Odniesienie:

https://developer.mozilla.org/en/docs/web/javascript/plerence/global_objects/date/now.

18
Jose Rojas 11 lipiec 2015, 20:03

Odpowiedź Varun nie uwzględnia Timezoneoffs. Oto wersja, która robi:

var d = new Date()
new Date(d.getTime() - d.getTimezoneOffset() * 60000).toJSON().slice(0, 10) // 2015-08-11

TimezoneOffset ma kilka minut, podczas gdy konstruktor daty przyjmuje milisekund, a więc mnożenie przez 60000.

16
Community 23 maj 2017, 12:18

Najkrótsza odpowiedź brzmi: new Date().toJSON().slice(0,10)

15
Blair Anderson 1 grudzień 2017, 21:43

Jak toISOString() powróci tylko bieżący czas UTC, a nie lokalny czas. Musimy dokonać randki, używając funkcji ".Tostring ()", aby uzyskać datę w formacie yyyy-MM-dd jak

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 Format

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 Format

document.write(new Date(new Date().toString().split('GMT')[0]+' UTC').toISOString().split('.')[0].replace('T',' '));
12
jafarbtech 18 maj 2018, 07:27
new Date().toDateString();

Wynik:

"Wed lutego 03 2016"

11
Isayevskiy_Sergey 3 luty 2016, 12:08

Jeśli chcesz prosty format DD/MM/YYYY, właśnie wymyśliłem to proste rozwiązanie, chociaż nie preferuje brakujące zer.

var d = new Date();
document.write( [d.getDate(), d.getMonth()+1, d.getFullYear()].join('/') );
10
Phil Ricketts 30 czerwiec 2015, 08:10
new Date().toISOString().slice(0,10); 

Pracowałby też

9
Toucouleur 1 październik 2015, 16:19

Najnowsza edycja: 8/23/19 Data-FNS biblioteka działa podobnie jak moment.js ale ma sposób mniej miejsca . Pozwala ci wybrać wiśni, które funkcje chcesz uwzględnić w swoim projekcie, więc nie musisz skompilować całej biblioteki, aby sformatować dzisiejszą datę. Jeśli minimalny 3rd party lib nie jest opcją dla twojego projektu, popieram akceptowane rozwiązanie przez Samuela Materia Góra.

zachowanie historii poniżej, ponieważ pomogło mu kilka osób. Ale dla rekordu jest dość hacky i podlega przerwie bez ostrzeżenia, podobnie jak większość rozwiązań na tym poście

Edytuj 2/7/2017 One-line JS Rozwiązanie:

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 Najnowsze, & AMP; chromowany zwrot todaysDate = "2/7/2017"
"działa" * w IE10 +

Wyjaśnienie

Dowiedziałem się, że IE10 i IE Edge robi rzeczy trochę inaczej .. Idź. z new Date(Date.now()).toLocaleString() jako wejście,

IE10 Powrót:

"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 dla tych rzeczy. Mój skrypt tylko oczyszcza to W górę i zapewnia Rozszerzone Tradycyjne Notation US: > todaysDate = "March 06, 2017"

IE EDGE Powrót:

"‎2‎/‎7‎/‎2017‎ ‎2‎:‎59‎:‎27‎ ‎PM"

Oczywiście nie może to być takie proste. String daty EDGE ma niewidoczne "•" znaki między każdym widocznym. Więc nie tylko będziemy sprawdzać, czy pierwsza postać jest liczbą, ale pierwsze 3 znaki, ponieważ okazuje się, że okaże się, że każdy pojedynczy Charakter w całym zakresie daty ostatecznie będzie kropką lub ukośnikiem w pewnym momencie. Aby utrzymać rzeczy proste, po prostu .slice ( ) pierwsze trzy znaki (maleńki bufor na przyszłych shenanigans), a następnie sprawdzić liczby. Prawdopodobnie należy zauważyć, że te niewidzialne kropki mogą potencjalnie utrzymywać w swoim kodzie. Być może kopiełbym to, jeśli masz większe plany niż po prostu wydrukować ten ciąg do twojego widoku.

∴ Zaktualizowany jeden wkładka:

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 jest do przeczytania. 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 jedną liniową:

new Date(Date.now()).toLocaleString().split(', ')[0];

I [1] da ci porę dnia.

8
Cameron Donahue 23 sierpień 2019, 17:59

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>
7
ROMANIA_engineer 19 październik 2014, 19:17

Dobrze jest uzyskać sformatowaną datę

let date = new Date().toLocaleDateString("en", {year:"numeric", day:"2-digit", month:"2-digit"});
console.log(date);
5
deHaar 1 sierpień 2019, 10:32
var dateTimeToday = new Date();
var dateToday = new Date(
    dateTimeToday.getFullYear(), 
    (dateTimeToday.getMonth() + 1) /*Jan = 0! */, 
    dateTimeToday.getDate(), 
    0, 
    0, 
    0, 
    0);
4
Artjom B. 12 kwiecień 2015, 16:07

Straighflward Wracam, aby wyciągnąć to wyłączenie (podczas rozważania aktualnej strefy czasowej, która wykorzystuje format ISO YYYY-MM-DD) to:

let d = new Date().toISOString().substring(0,19).replace("T"," ") // "2020-02-18 16:41:58"

Zwykle jest to ładny, kompatybilny format daty kompatybilnej i w razie potrzeby możesz przekształcić go na czystą wartość daty:

Date.parse(d); // 1582044297000
6
Caiuby Freitas 18 luty 2020, 16:46