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.