¿Cómo obtengo la hora actual solo en JavaScript?

144

¿Cómo puedo obtener la hora actual en JavaScript y usarla en un selector de tiempo?

Lo intenté var x = Date()y obtuve:

Martes 15 de mayo de 2012 05:45:40 GMT-0500

Pero solo necesito la hora actual, por ejemplo, 05:45

¿Cómo puedo asignar esto a una variable?

hss
fuente
15
@swati Porque queremos que esta sea nuestra fuente para ir a todos nuestros problemas de programación. Tal vez alguien más tenga una mejor solución y de esta manera todos se pueden enumerar como referencia en un solo lugar.
Alfred
27
@swati - Sé que escribiste ese comentario hace más de 3 años, pero ahora esta página es el resultado de búsqueda número 1 en Google para "obtener tiempo parte JavaScript". Tenga en cuenta que la pregunta de hoy ES los resultados de búsqueda de mañana.
David Deutsch
@DavidDeutsch Esto debería ser como un encabezado en negrita en la página Preguntar pregunta. "La pregunta de hoy ES los resultados de búsqueda de mañana"
Vaulstein

Respuestas:

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
Royi Namir
fuente
1
var d = new Date("2011-04-20 09:30:51.01"); alert(d.getHours()); // => 9 salidaNaN
Chinmay235
1
@ Chinmay235 Agregado, Tasí que ahora es la iso universal correcta. Por cierto, solo veo undefineden IE. De todos modos arreglado.
Royi Namir el
126

Corto y simple:

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

4 horas después (use milisec: sec == 1000):

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

2 días antes:

new Date(new Date().getTime() - 2*24*60*60*1000).toLocaleDateString() // 11/14/2015
snir
fuente
66
¡El cálculo de sumar y restar es útil!
Dov Miller,
¿A qué necesitaría cambiarlo si quisiera agregar 1 minuto?
lets0code
80

Obtenga y configure la hora actual de manera eficiente utilizando JavaScript

No pude encontrar una solución que hiciera exactamente lo que necesitaba. Quería un código limpio y pequeño, así que se me ocurrió esto:

(Establezca una vez en su master.js e invoque cuando sea necesario).

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


ACTUALIZAR

Ahora hay suficiente soporte de navegador para usar simplemente: toLocaleTimeString

Para html5 escriba timeel formato debe ser 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

DreamTeK
fuente
3
@ gcoleman0828 Llegué tarde a la fiesta. Gracias por la votación :)
DreamTeK
... ¿Escribiste 'get' como 'set'? Si no, su respuesta no coincide con su título y su título no coincide con la pregunta.
Financia la demanda de Mónica
@QPaysTaxes Mi respuesta hace ambas cosas. El javascript obtiene el tiempo y el html muestra al usuario cómo se puede usar el código para establecer el tiempo también si es necesario. He actualizado mi respuesta para reflejar eso. Gracias por mencionarlo.
DreamTeK
el tiempo se muestra 30 minutos atrás para mí, si hago clic en Establecer hora, es correcto pero en tiempo militar. El tiempo establecido debe ser alternar, supongo que no funciona
Ciasto piekarz
ToLocaleTime tendrá un formato diferente según la configuración regional del navegador, en su lugar, puede usar una configuración regional fija sin PM / AM como fr para obtener una hora que coincida con el formato de hora html5new Date().toLocaleTimeString('fr', {hour: '2-digit', minute:'2-digit'});
Tofandel
24

Tratar

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

O

new Date().toTimeString().split(" ")[0];
Fernando Gomes
fuente
En el segundo formulario, si usa solo toString () y cambia el 0 a 4, también obtendrá el tiempo en el formato HH: MM: SS.
BigMac66
9

Quieres decir:

var d = new Date();
var curr_hour = d.getHours();
var curr_min = d.getMinutes();
Sudhir Bastakoti
fuente
8

const date = Date().slice(16,21);
console.log(date);

Parmeet Singh
fuente
6

Prueba esto:

var date = new Date();
var hour = date.getHours();
var min = date.getMinutes();
EstoicoNord
fuente
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;
}
Hamfri
fuente
Si todo lo que necesita es tiempo sin segundos y no necesita las partes PM o AM, el código anterior debería funcionar perfectamente.
Hamfri
3

Así es como puedes hacerlo.

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

Parvez Rahaman
fuente
1
Esto no es menos críptico ni mejor que new Date().toTimeString().slice(0, 5).
Dan Dascalescu
1
@DanDascalescu Como desarrollador de Python (principalmente), agradezco la críptica frase que ha proporcionado y no me habría desplazado lo suficiente por la página para ver la respuesta concisa de Parmeet Singh (a lo que supongo que se refería). ¡Gracias!
Jason R Stevens CFA
2

esta -

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

entonces-

 x = date
h = hours
m = mins
s = seconds
Vibhaas Srivastava
fuente
1

Simplemente puede usar estos métodos.

console.log(new Date().toLocaleTimeString([], { hour: '2-digit', minute: "2-digit", hour12: false }));
console.log(new Date().toLocaleTimeString([], { hour: '2-digit', minute: "2-digit" }));

Omer Farad
fuente
0

Este es el camino más corto.

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

Aquí también hay un camino a través de la manipulación de cadenas que no se mencionó.

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

fuente
Lo más corto es Date().substr(16, 5). No es necesario toString().
Dan Dascalescu
0

Asignar a variables y mostrarlo.

time = new Date();

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

document.getElementById("time").value = hh + ":" + mm + ":" + ss;
mhtmalpani
fuente
¿Por qué asumir que esto necesita ser almacenado en un timeelemento? OP solicitó el almacenamiento en una variable, y solo por la hora y los minutos. let time = Date().substr(16, 5)hace eso.
Dan Dascalescu
0

Funciones simples para separar la fecha y la hora y con un formato compatible con entrada HTML de fecha y hora

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
}
AbdessamadEL
fuente
-1
var today = new Date();  //gets current date and time
var hour = today.getHours();         
var minute = today.getMinutes();
var second = today.getSeconds();
Saurabh Agarwal
fuente
1
¿Cómo es que esto agrega algo a las respuestas existentes? El problema central era la ausencia de new.
RomainValeri
-2

Esto funcionó para mí, pero depende de lo que obtienes cuando golpeas Date():

Date().slice(16,-12)
Luffy
fuente
Esto parece idéntico a una respuesta existente: stackoverflow.com/a/46599746/3294944
stealththeninja
@stealththeninja: no es idéntico. Esto voltea la segunda zona horaria también.
Dan Dascalescu
-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;
usuario9720939
fuente