Come posso ottenere l'ora corrente solo in JavaScript


144

Come posso ottenere l'ora corrente in JavaScript e utilizzarla in un orologio?

Ho provato var x = Date()e ottenuto:

Mar 15 maggio 2012 05:45:40 GMT-0500

Ma ho bisogno solo dell'ora corrente, ad esempio, 05:45

Come posso assegnarlo a una variabile?


15
@swati Perché vogliamo che questo sia la nostra fonte goto per tutti i nostri problemi di programmazione. Forse qualcun altro ha una soluzione migliore e in questo modo possono essere elencati come riferimento in un unico punto.
Alfred,

27
@swati - So che hai scritto quel commento più di 3 anni fa, ma ora questa pagina è il risultato di ricerca n. 1 in Google per "get JavaScript part time". Tieni presente che la domanda di oggi È i risultati di ricerca di domani.
David Deutsch,

@DavidDeutsch Questo dovrebbe essere come un'intestazione in grassetto nella pagina della domanda. "La domanda di oggi È i risultati di ricerca di domani"
Vaulstein

Risposte:


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

o

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 uscitaNaN
Chinmay235,

1
@ Chinmay235 Aggiunto Tquindi ora è l'iso universale giusto. A proposito, vedo solo undefinedin IE. Comunque risolto.
Royi Namir,

126

Breve e semplice:

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

4 ore dopo (usa milisec: sec == 1000):

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

2 giorni prima:

new Date(new Date().getTime() - 2*24*60*60*1000).toLocaleDateString() // 11/14/2015

6
Il calcolo dell'aggiunta e della sottrazione è utile!
Dov Miller,

Cosa avrei bisogno di cambiarlo se volessi aggiungere 1 minuto invece?
lets0code

80

Ottieni e imposta l'ora corrente in modo efficiente utilizzando JavaScript

Non sono riuscito a trovare una soluzione che facesse esattamente ciò di cui avevo bisogno. Volevo un codice pulito e minuscolo, quindi ho pensato a questo:

(Impostare una volta in master.js e richiamare quando richiesto.)

JAVASCRIPT PURO

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" />


AGGIORNARE

Ora esiste un supporto browser sufficiente per utilizzare semplicemente: toLocaleTimeString

Per il tipo html5time il formato deve essere 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 Ero in ritardo alla festa. Grazie per il voto :)
DreamTeK,

... Hai scritto 'get' come 'set'? In caso contrario, la risposta non corrisponde al titolo e il titolo non corrisponde alla domanda.
Finanzi la causa di Monica

@QPaysTaxes La mia risposta fa entrambe le cose. Il javascript ottiene l'ora e l'html mostra all'utente come utilizzare il codice per impostare l'ora anche se necessario. Ho aggiornato la mia risposta per riflettere ciò. Grazie per segnalarlo.
DreamTeK,

il tempo sta mostrando 30 minuti indietro per me, se clicco su Imposta ora, è corretto ma in tempo militare. L'ora
prestabilita

ToLocaleTime avrà un formato diverso a seconda della locale del browser, invece puoi usare una locale fissa senza PM / AM come fr per ottenere un orario corrispondente al formato orario html5new Date().toLocaleTimeString('fr', {hour: '2-digit', minute:'2-digit'});
Tofandel

24

Provare

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

O

new Date().toTimeString().split(" ")[0];

Nel secondo modulo se usi solo toString () e cambi lo 0 in un 4 ottieni anche il tempo nel formato HH: MM: SS.
BigMac66,

9

Vuoi dire:

var d = new Date();
var curr_hour = d.getHours();
var curr_min = d.getMinutes();


6

Prova questo:

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

Se tutto ciò di cui hai bisogno è il tempo senza secondi e non hai bisogno delle parti PM o AM, il codice sopra dovrebbe funzionare perfettamente.
Hamfri,


3

Ecco come puoi farlo.

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


1
Questo non è meno criptico o migliore di new Date().toTimeString().slice(0, 5).
Dan Dascalescu,

1
@DanDascalescu Come devoto Python (principalmente) apprezzo il criptico one-liner che hai fornito e non avrei fatto scorrere abbastanza in basso la pagina per vedere la risposta concisa di Parmeet Singh (a cui presumo che ti riferissi). Grazie!
Jason R Stevens CFA,

2

Questo -

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

così-

 x = date
h = hours
m = mins
s = seconds

1

Puoi semplicemente usare questo metodo.

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

Questo è il modo più breve.

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

Ecco anche un modo per manipolare le stringhe che non è stato menzionato.

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

Il più corto è Date().substr(16, 5). Non hai bisogno toString().
Dan Dascalescu,

0

Assegna a variabili e visualizzalo.

time = new Date();

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

document.getElementById("time").value = hh + ":" + mm + ":" + ss;

Perché presumere che questo debba essere archiviato in un timeelemento? OP ha chiesto la memorizzazione in una variabile e solo per l'ora e i minuti. let time = Date().substr(16, 5)fa quello.
Dan Dascalescu,

0

Funzioni semplici per separare data e ora e con formato compatibile con input HTML di data e ora

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
In che modo questo aggiunge qualcosa alle risposte esistenti? Il problema principale era l'assenza di 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;
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.