Jak uzyskać aktualny czas tylko w JavaScript

144

Jak uzyskać aktualny czas w JavaScript i używać go w timepicker?

Próbowałem var x = Date()i otrzymałem:

Wtorek 15 maja 2012 05:45:40 GMT-0500

Ale potrzebuję tylko aktualnego czasu, na przykład 05:45

Jak mogę to przypisać do zmiennej?

hss
źródło
15
@swati Ponieważ chcemy, aby było to nasze źródło goto dla wszystkich naszych problemów programistycznych. Może ktoś inny ma lepsze rozwiązanie i w ten sposób można je wszystkie wymienić jako referencje w jednym miejscu.
Alfred
27
@swati - Wiem, że napisałeś ten komentarz ponad 3 lata temu, ale teraz ta strona jest numerem 1 w wynikach wyszukiwania w Google pod kątem „get time part JavaScript”. Pamiętaj, że dzisiejsze pytanie JEST jutrzejszymi wynikami wyszukiwania.
David Deutsch
@DavidDeutsch To powinno wyglądać jak pogrubiony nagłówek na stronie Zadaj pytanie. „Dzisiejsze pytanie JEST jutrzejszymi wynikami wyszukiwania”
Vaulstein

Odpowiedzi:

220
var d = new Date("2011-04-20T09:30:51.01");
d.getHours(); // => 9
d.getMinutes(); // =>  30
d.getSeconds(); // => 51

lub

var d = new Date(); // for now
d.getHours(); // => 9
d.getMinutes(); // =>  30
d.getSeconds(); // => 51
Royi Namir
źródło
1
var d = new Date("2011-04-20 09:30:51.01"); alert(d.getHours()); // => 9 wyjścieNaN
Chinmay235
1
@ Chinmay235 Dodano, Twięc teraz jest to właściwy uniwersalny ISO. BTW widzę tylko undefinedw IE. W każdym razie Naprawiono.
Royi Namir
126

Krótko i prosto:

new Date().toLocaleTimeString(); // 11:18:48 AM
//---
new Date().toLocaleDateString(); // 11/16/2015
//---
new Date().toLocaleString(); // 11/16/2015, 11:18:48 PM

4 godziny później (użyj milisek: s == 1000):

new Date(new Date().getTime() + 4*60*60*1000).toLocaleTimeString(); // 3:18:48 PM or 15:18:48

2 dni wcześniej:

new Date(new Date().getTime() - 2*24*60*60*1000).toLocaleDateString() // 11/14/2015
snir
źródło
6
Obliczanie dodawania i odejmowania jest pomocne!
Dov Miller
Na co musiałbym to zmienić, gdybym zamiast tego chciał dodać 1 minutę?
lets0code
80

Efektywne pobieranie i ustawianie aktualnego czasu za pomocą javascript

Nie mogłem znaleźć rozwiązania, które zrobiłoby dokładnie to, czego potrzebowałem. Chciałem czysty i mały kod, więc wymyśliłem to:

(Ustaw raz w swoim master.js i wywołaj w razie potrzeby).

PURE JAVASCRIPT

function timeNow(i) {
  var d = new Date(),
    h = (d.getHours()<10?'0':'') + d.getHours(),
    m = (d.getMinutes()<10?'0':'') + d.getMinutes();
  i.value = h + ':' + m;
}
<a onclick="timeNow(test1)" href="#">SET TIME</a>
<input id="test1" type="time" value="10:40" />


AKTUALIZACJA

Obsługa przeglądarek jest teraz wystarczająca, aby po prostu użyć: toLocaleTimeString

W przypadku typu html5time format musi być hh:mm.

function timeNow(i) {
  i.value = new Date().toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'});
}
<a onclick="timeNow(test1)" href="#">SET TIME</a>
<input id="test1" type="time" value="10:40" />

Try it on jsfiddle

DreamTeK
źródło
3
@ gcoleman0828 Spóźniłem się na imprezę. Dzięki za głosowanie :)
DreamTeK
... Czy wpisałeś „otrzymano” jako „ustawione”? Jeśli nie, Twoja odpowiedź nie pasuje do Twojego tytułu, a Twój tytuł nie pasuje do pytania.
Załóż pozew Moniki
@QPaysTaxes Moja odpowiedź ma jedno i drugie. JavaScript pobiera czas, a html pokazuje użytkownikowi, jak kod może być użyty do ustawienia czasu, jeśli jest to wymagane. Zaktualizowałem swoją odpowiedź, aby to odzwierciedlić. dzięki za wskazanie tego.
DreamTeK
czas pokazuje mi 30 minut opóźnienia, jeśli kliknę na Ustaw czas, jest to poprawne, ale w czasie wojskowym. Ustaw czas niech zgadnij, że nie działa
Ciasto piekarz
Czas toLocaleTime będzie miał inny format w zależności od ustawień regionalnych przeglądarki, zamiast tego możesz użyć stałego ustawienia bez PM / AM, jak fr, aby uzyskać dopasowanie czasu do formatu czasu html5new Date().toLocaleTimeString('fr', {hour: '2-digit', minute:'2-digit'});
Tofandel
24

Próbować

new Date().toLocaleTimeString().replace("/.*(\d{2}:\d{2}:\d{2}).*/", "$1");

Lub

new Date().toTimeString().split(" ")[0];
Fernando Gomes
źródło
W drugiej formie, jeśli użyjesz tylko toString () i zmienisz 0 na 4, otrzymasz również czas w formacie HH: MM: SS.
BigMac66
9

Czy masz na myśli:

var d = new Date();
var curr_hour = d.getHours();
var curr_min = d.getMinutes();
Sudhir Bastakoti
źródło
8

const date = Date().slice(16,21);
console.log(date);

Parmeet Singh
źródło
6

Spróbuj tego:

var date = new Date();
var hour = date.getHours();
var min = date.getMinutes();
StoicFnord
źródło
5
function getCurrentTime(){
    var date = new Date();
    var hh = date.getHours();
    var mm = date.getMinutes();

    hh = hh < 10 ? '0'+hh : hh; 
    mm = mm < 10 ? '0'+mm : mm;

    curr_time = hh+':'+mm;
    return curr_time;
}
Hamfri
źródło
Jeśli potrzebujesz tylko czasu bez sekund i nie potrzebujesz części PM lub AM, powyższy kod powinien działać idealnie.
Hamfri
3

Tak możesz to zrobić.

const date = new Date();
const time = date.toTimeString().split(' ')[0].split(':');
console.log(time[0] + ':' + time[1])

Parvez Rahaman
źródło
1
To nie jest mniej tajemnicze ani lepsze niż new Date().toTimeString().slice(0, 5).
Dan Dascalescu
1
@DanDascalescu Jako (przede wszystkim) programista Pythona doceniam tajemniczy, jednolinijkowy opis, który dostarczyłeś i nie przewinąłbym wystarczająco daleko w dół strony, aby zobaczyć zwięzłą odpowiedź Parmeeta Singha (do której, jak zakładam, odnosisz się). Dzięki!
Jason R Stevens CFA
2

to -

var x = new Date(); 
var h = x.getHours(); 
var m = x.getMinutes(); 
var s = x.getSeconds(); 

więc-

 x = date
h = hours
m = mins
s = seconds
Vibhaas Srivastava
źródło
1

Możesz po prostu użyć tych metod.

console.log(new Date().toLocaleTimeString([], { hour: '2-digit', minute: "2-digit", hour12: false }));
console.log(new Date().toLocaleTimeString([], { hour: '2-digit', minute: "2-digit" }));

Omer Farad
źródło
0

To jest najkrótsza droga.

var now = new Date().toLocaleTimeString();
console.log(now)

Tutaj jest również sposób na manipulację strunami, o którym nie wspomniano.

var now = new Date()
console.log(now.toString().substr(16,8))

źródło
Najkrótszy jest Date().substr(16, 5). Nie potrzebujesz toString().
Dan Dascalescu
0

Przypisz do zmiennych i wyświetl je.

time = new Date();

var hh = time.getHours();
var mm = time.getMinutes();
var ss = time.getSeconds() 

document.getElementById("time").value = hh + ":" + mm + ":" + ss;
mhtmalpani
źródło
Po co zakładać, że musi to być przechowywane w timeelemencie? OP poprosił o przechowywanie w zmiennej i tylko przez godzinę i minutę. let time = Date().substr(16, 5)robi to.
Dan Dascalescu
0

Proste funkcje do oddzielania daty i godziny oraz w zgodnym formacie z danymi wejściowymi czasu i daty HTML

function formatDate(date) {
  var d         = new Date(date),
      month = '' + (d.getMonth() + 1),
      day   = '' + d.getDate(),
      year  = d.getFullYear();

  if (month.length < 2) month = '0' + month;
  if (day.length < 2) day = '0' + day;

  return [year, month, day].join('-');
}

function formatTime(date) {
        var hours   = new Date().getHours() > 9 ? new Date().getHours() : '0' + new Date().getHours()
        var minutes = new Date().getMinutes() > 9 ? new Date().getMinutes() : '0' + new Date().getMinutes()

        return hours + ':' + minutes
}
AbdessamadEL
źródło
-1
var today = new Date();  //gets current date and time
var hour = today.getHours();         
var minute = today.getMinutes();
var second = today.getSeconds();
Saurabh Agarwal
źródło
1
W jaki sposób to dodaje cokolwiek do istniejących odpowiedzi? Podstawowym problemem był brak new.
RomainValeri
-2

To zadziałało dla mnie, ale to zależy od tego, co otrzymasz, gdy uderzysz Date():

Date().slice(16,-12)
Luffy
źródło
Wygląda to tak samo, jak istniejąca odpowiedź: stackoverflow.com/a/46599746/3294944
stealththeninja
@stealththeninja: to nie jest identyczne. Spowoduje to również zrzucenie drugiej i strefy czasowej.
Dan Dascalescu
-3
var hours = date.getHours();
        var minutes = date.getMinutes();
        var ampm = hours >= 12 ? 'pm' : 'am';
        hours = hours % 12;
        hours = hours ? hours : 12; // the hour '0' should be '12'
        minutes = minutes < 10 ? '0'+minutes : minutes;
        var strTime = hours + ':' + minutes + ' ' + ampm;
        console.log(strTime);
        $scope.time = strTime;

        date.setDate(date.getDate()+1);
        month = '' + (date.getMonth() + 1),
        day = '' + date.getDate(1),
        year = date.getFullYear();
        if (month.length < 2) month = '0' + month;
        if (day.length < 2) day = '0' + day;
        var tomorrow = [year, month, day].join('-');
        $scope.tomorrow = tomorrow;
user9720939
źródło