Come mostrare l'ora corrente in JavaScript nel formato HH: MM: SS?


96

Puoi dirmi come impostare l'ora in questo formato HH: MM: SS. Voglio impostarlo in un div?



1
Ma il problema è che ha PM e AP non ne ho bisogno. Secondo formato 24
user2648752

@ user2648752 controlla la mia risposta demo jsfiddle.net/cse_tushar/fKKSb
Tushar Gupta - curioustushar

1
Ehm ... Perché la domanda è contrassegnata con la data , anche se l'utente chiede l'ora?
Lloyd Dominic

Risposte:


104

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 utilizzando solo javaScript

Aggiornare

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

111

Puoi usare la funzione nativa Date.toLocaleTimeString():

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

Questo mostrerà ad esempio:

"11:33:01"

L'ho trovato su http://www.w3schools.com/jsref/jsref_tolocaletimestring.asp


5
Penso che questa dovrebbe essere la risposta accettata, perché risponde esattamente alla domanda, utilizza la funzione nativa ed è il codice funzionante più breve per ottenere ciò che viene richiesto.
vchrizz

10
3:59:45 PM è quello che mi ha dato. Questo non è il formato richiesto.
Ivan

toLocaleTimeString non è una funzione
Utente

59

Puoi farlo in Javascript.

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

Attualmente ritorna 15:5:18. Si noti che se uno qualsiasi dei valori è inferiore a 10, verrà visualizzato utilizzando solo una cifra, non due.

Controlla questo in JSFiddle

Aggiornamenti:
per provare con 0 prefissati

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


Si prega di rispondere a questa domanda che devo mostrare l'ora nella prima colonna.
user2648752

sì, ma devo aggiungere tre colonne come scritto in questione.Si prega di leggere la domanda del signore.Ho bisogno di aggiungere tempo sulla prima colonna e dati in tempo reale sulla seconda colonna
user2648752

Devi tenere conto di minuti e secondi <10, come ha fatto Tushar nella sua risposta, altrimenti non mostrerà uno "0" iniziale.
keepitreal

@ CleverGirl stavo cercando di dare una risposta semplice, quindi l'ho scritta. Dato che hai menzionato gli 0 con prefisso, vorrei farlo con la risposta di @ user113716 che è stata rappresentata molto chiaramente.
Praveen

40

Puoi usare moment.js per farlo.

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

Uscite:

16:30:03

4
Grazie Remus. Non cadrò mai più nella ingloriosa tana del coniglio delle manipolazioni di js datetime.
matlembo

Grazie uomo! Tutti gli altri rendono tutto così complicato! Questa è la risposta più succinta per qualcuno che ha bisogno di afferrare una riga di codice veloce per una cosa semplice!
Presidente

5
Nascondi i 120 byte dispari necessari per farlo includendo uno script da 20k +! genius
frumbert

1
Ehi, non sto dicendo che dovresti sempre usarlo, ma se lo sei già, perché non farlo nel modo più semplice 😉
brandonscript

27
new Date().toTimeString().slice(0,8)

Nota che toLocaleTimeString () potrebbe restituire qualcosa di simile 9:00:00 AM.


1
Questa è la prima volta che vedo qualcuno creare un esempio di codice che istanzia la data senza new Date () ... è normale usare (new Date)?
OG Sean

5

Usa in questo modo:

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

Risultato: 18:56:31


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>

Un modo molto semplice utilizzando moment.js e setInterval .

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

Output di esempio

Utilizzando setInterval()impostato su 1000 ms o 1 secondo, l'uscita si aggiornerà ogni 1 secondo.

15:25:50

È così che utilizzo questo metodo in uno dei miei progetti collaterali.

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

Forse ti stai chiedendo se stai usando setInterval() potrebbe causare alcuni problemi di prestazioni.

SetInterval è impegnativo per la CPU?

Non credo che setInterval causi intrinsecamente problemi di prestazioni significativi. Sospetto che la reputazione possa derivare da un'epoca precedente, quando le CPU erano meno potenti. ... - lonesomeday

No, setInterval non è intensivo per la CPU in sé e per sé. Se hai molti intervalli in esecuzione su cicli molto brevi (o un'operazione molto complessa in esecuzione su un intervallo moderatamente lungo), allora ciò può facilmente diventare intensivo per la CPU, a seconda esattamente di ciò che stanno facendo i tuoi intervalli e della frequenza con cui lo fanno. ... - aroth

Ma in generale, usare setInterval piace molto sul tuo sito può rallentare le cose. 20 intervalli simultanei in esecuzione con un lavoro più o meno pesante influenzeranno lo spettacolo. E poi di nuovo .. puoi davvero rovinare qualsiasi parte immagino che non sia un problema di setInterval. ... - jAndy


2
new Date().toLocaleTimeString('it-IT')

Le it-ITimpostazioni internazionali riempiono l'ora se necessario e omettono PM o AM01:33:01


Cosa offre solo questo codice di risposta rispetto alle soluzioni esistenti che mostrano come utilizzare .toLocaleTimeString()?
Jason Aller

la parte "it-IT" significa che restituisce esattamente come richiesto console.log (event.toLocaleTimeString ('it-IT')); // output previsto: 01:15:30 se non includi "it-IT", otterrai qualcosa di simile 1:15:30 PMche manca lo 0 iniziale e aggiunge "PM" che altrimenti dovresti eliminare. Ho modificato la mia risposta per chiarirlo.
iamnotsam

1

Questo codice produrrà l'ora corrente nel formato HH: MM: SS nella console, tiene conto dei fusi orari 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

0

Questo è un esempio di come impostare l'ora in un div (only_time) utilizzando 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>

Sebbene questo blocco di codice possa rispondere alla domanda, sarebbe meglio se tu potessi fornire una piccola spiegazione del motivo per cui lo fa.
Peter,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.