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?


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

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

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


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];

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();


6

Spróbuj tego:

var date = new Date();
var hour = date.getHours();
var min = date.getMinutes();

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;
}

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])


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

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" }));


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))

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;

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
}

-1
var today = new Date();  //gets current date and time
var hour = today.getHours();         
var minute = today.getMinutes();
var second = today.getSeconds();

1
W jaki sposób to dodaje cokolwiek do istniejących odpowiedzi? Podstawowym problemem był brak new.
RomainValeri


-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;
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.