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.