Jak wyświetlić aktualny czas w JavaScript w formacie HH: MM: SS?

100

Czy możesz mi powiedzieć, jak ustawić czas w tym formacie HH: MM: SS. Chcę to ustawić w div?

user2648752
źródło
Oto mój kod .. jsfiddle.net/naveennsit/yd99X
user2648752
1
Ale problem polega na tym, że ma PM i AP Nie potrzebuję tego. Po drugie format 24
user2648752
@ user2648752 sprawdź moją odpowiedź demo jsfiddle.net/cse_tushar/fKKSb
Tushar Gupta - curioustushar
1
Um ... Dlaczego pytanie jest oznaczone datą , mimo że użytkownik pyta o czas?
Lloyd Dominic

Odpowiedzi:

108

function checkTime(i) {
  if (i < 10) {
    i = "0" + i;
  }
  return i;
}

function startTime() {
  var today = new Date();
  var h = today.getHours();
  var m = today.getMinutes();
  var s = today.getSeconds();
  // add a zero in front of numbers<10
  m = checkTime(m);
  s = checkTime(s);
  document.getElementById('time').innerHTML = h + ":" + m + ":" + s;
  t = setTimeout(function() {
    startTime()
  }, 500);
}
startTime();
<div id="time"></div>

DEMO przy użyciu tylko javaScript

Aktualizacja

Updated Demo

(function () {
    function checkTime(i) {
        return (i < 10) ? "0" + i : i;
    }

    function startTime() {
        var today = new Date(),
            h = checkTime(today.getHours()),
            m = checkTime(today.getMinutes()),
            s = checkTime(today.getSeconds());
        document.getElementById('time').innerHTML = h + ":" + m + ":" + s;
        t = setTimeout(function () {
            startTime()
        }, 500);
    }
    startTime();
})();
Tushar Gupta - curioustushar
źródło
116

Możesz użyć funkcji natywnej Date.toLocaleTimeString():

var d = new Date();
var n = d.toLocaleTimeString();

Spowoduje to wyświetlenie np .:

"11:33:01"

Znalazłem to na http://www.w3schools.com/jsref/jsref_tolocaletimestring.asp

pstryk
źródło
5
Myślę, że to powinna być akceptowana odpowiedź, ponieważ odpowiada dokładnie na pytanie, używa funkcji natywnej i jest najkrótszym działającym kodem, aby uzyskać to, o co jest proszony.
vchrizz
11
15:59:45 jest tym, co mi dało. To nie jest żądany format.
Ivan
toLocaleTimeString nie jest funkcją
użytkownik
w jednej liniinew Date().toLocaleTimeString()
aljgom
61

Możesz to zrobić w Javascript.

var time = new Date();
console.log(time.getHours() + ":" + time.getMinutes() + ":" + time.getSeconds());

Obecnie powraca 15:5:18. Zwróć uwagę, że jeśli którakolwiek z wartości jest mniejsza niż 10, będą wyświetlane przy użyciu tylko jednej cyfry, a nie dwóch.

Sprawdź to w JSFiddle

Aktualizacje:
dla prób z prefiksem 0

var time = new Date();
console.log(
    ("0" + time.getHours()).slice(-2)   + ":" + 
    ("0" + time.getMinutes()).slice(-2) + ":" + 
    ("0" + time.getSeconds()).slice(-2));
Praveen
źródło
Proszę odpowiedz na to pytanie. stackoverflow.com/questions/18227667/…
user2648752
Proszę odpowiedzieć na to pytanie. Muszę pokazać czas w pierwszej kolumnie.
user2648752
tak Ale muszę dodać trzy kolumny zgodnie z pytaniem.Przeczytaj pytanie pana. Potrzebuję dodać czas w pierwszej kolumnie i dane czasu rzeczywistego w drugiej kolumnie
użytkownik2648752
Musisz uwzględnić minuty i sekundy <10, tak jak zrobił to Tushar w swojej odpowiedzi, inaczej nie pokaże początkowego „0”.
keepitreal
@CleverGirl Próbowałem udzielić prostej odpowiedzi, więc to napisałem. Ponieważ wspomniałeś o przedrostkach 0, chciałbym to zrobić z odpowiedzią @ user113716, która została bardzo jasno przedstawiona.
Praveen
40

Możesz do tego użyć momentu.js .

var now = new moment();
console.log(now.format("HH:mm:ss"));

Wyjścia:

16:30:03
brandonscript
źródło
4
Dziękuję Remus. Już nigdy więcej nie wpadnę w niesławną króliczą norę manipulacji datetime js.
matlembo
Dzięki stary! Każdy inny komplikuje wszystko! To najbardziej zwięzła odpowiedź dla kogoś, kto potrzebuje krótkiej linii kodu w celu uzyskania prostej rzeczy!
ChairmanMeow,
5
Ukryj 120 bajtów potrzebnych do zrobienia tego, dołączając skrypt 20k +! genius
frumbert
1
Hej, ja nie mówię, że zawsze należy go używać, ale jeśli już są, to dlaczego nie zrobić to w prosty sposób 😉
brandonscript
29
new Date().toTimeString().slice(0,8)

Zauważ, że toLocaleTimeString () może zwrócić coś w rodzaju 9:00:00 AM.

Thorsten
źródło
1
Po raz pierwszy widziałem, jak ktoś tworzy przykładowy kod tworzący instancję date bez nowej daty () ... czy to normalne w użyciu (nowa data)?
OG Sean
5

Użyj w ten sposób:

var d = new Date();
localtime = d.toLocaleTimeString('en-US', { hour12: false });

Wynik: 18:56:31

Tomasz
źródło
2

function realtime() {
  
  let time = moment().format('h:mm:ss a');
  document.getElementById('time').innerHTML = time;
  
  setInterval(() => {
    time = moment().format('h:mm:ss a');
    document.getElementById('time').innerHTML = time;
  }, 1000)
}

realtime();
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>

<div id="time"></div>

Bardzo prosty sposób za pomocą moment.js i setInterval .

setInterval(() => {
  moment().format('h:mm:ss a');
}, 1000)

Przykładowe dane wyjściowe

Przy setInterval()ustawieniu na 1000 ms lub 1 sekundę dane wyjściowe będą odświeżane co 1 sekundę.

15:25:50

W ten sposób używam tej metody na jednym z moich pobocznych projektów.

setInterval(() => {
  this.time = this.shared.time;
}, 1000)

Być może zastanawiasz się, czy używanie setInterval()spowoduje problemy z wydajnością.

Czy setInterval obciąża procesor?

Nie sądzę, że setInterval z natury spowoduje poważne problemy z wydajnością. Podejrzewam, że ta reputacja może pochodzić z wcześniejszej epoki, kiedy procesory były słabsze. ... - samotny dzień

Nie, metoda setInterval sama w sobie nie obciąża procesora. Jeśli masz wiele interwałów działających w bardzo krótkich cyklach (lub bardzo złożoną operację działającą w umiarkowanie długich odstępach czasu), może to łatwo obciążyć procesor, w zależności od dokładnie tego, co robią twoje interwały i jak często to robią. ... - aroth

Ogólnie rzecz biorąc, używanie setInterval naprawdę lubisz dużo na swojej stronie może spowolnić działanie. 20 równoległych interwałów z mniej lub bardziej ciężką pracą wpłynie na pokaz. A potem znowu ... naprawdę możesz zepsuć każdą część, myślę, że to nie jest problem setInterval. ... - jAndy

Vadamadafaka
źródło
2
new Date().toLocaleTimeString('it-IT')

Ustawienie it-ITregionalne zdarza się, że w razie potrzeby wprowadza godzinę i pomija PM lub AM01:33:01

iamnotsam
źródło
Na co ten kod odpowiada tylko w porównaniu z istniejącymi rozwiązaniami, które pokazują, jak używać .toLocaleTimeString()?
Jason Aller
część „it-IT” oznacza, że ​​wyprowadza dokładnie tak, jak zapytano console.log (event.toLocaleTimeString („it-IT”)); // oczekiwany wynik: 01:15:30 jeśli nie dodasz „it-IT”, otrzymujesz coś takiego, 1:15:30 PMco pomija początkowe 0 i dodaje „PM”, które w przeciwnym razie musiałbyś usunąć. Zredagowałem odpowiedź, żeby to wyjaśnić.
iamnotsam
1

Ten kod wyświetli aktualny czas w formacie GG: MM: SS w konsoli, uwzględnia strefy czasowe GMT.

var currentTime = Date.now()
var GMT = -(new Date()).getTimezoneOffset()/60;
var totalSeconds = Math.floor(currentTime/1000);
seconds = ('0' + totalSeconds % 60).slice(-2);
var totalMinutes = Math.floor(totalSeconds/60);
minutes = ('0' + totalMinutes % 60).slice(-2);
var totalHours = Math.floor(totalMinutes/60);
hours = ('0' + (totalHours+GMT) % 24).slice(-2);
var timeDisplay = hours + ":" + minutes + ":" + seconds;
console.log(timeDisplay);
//Output is: 11:16:55
vanjavk
źródło
0

To jest przykład, jak ustawić czas w div (only_time) za pomocą javascript.

function date_time() {
    var date = new Date();
    var am_pm = "AM";
    var hour = date.getHours();
    if(hour>=12){
        am_pm = "PM";
    }
    if (hour == 0) {
        hour = 12;
    }
    if(hour>12){
        hour = hour - 12;
    }
    if(hour<10){
        hour = "0"+hour;
    }

    var minute = date.getMinutes();
    if (minute<10){
        minute = "0"+minute;
    }
    var sec = date.getSeconds();
    if(sec<10){
        sec = "0"+sec;
    }

    document.getElementById("time").innerHTML =  hour+":"+minute+":"+sec+" "+am_pm;
}
setInterval(date_time,500);
<per>
<div class="date" id="time"></div>
</per>
ASAbir
źródło
Chociaż ten blok kodu może odpowiedzieć na pytanie, najlepiej byłoby, gdybyś mógł podać małe wyjaśnienie, dlaczego tak się dzieje.
Peter
0
new Date().toLocaleTimeString()
Dilushan
źródło