¿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?


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

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

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


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

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


6

Prueba esto:

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

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])


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

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


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))

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;

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

-1
var today = new Date();  //gets current date and time
var hour = today.getHours();         
var minute = today.getMinutes();
var second = today.getSeconds();

1
¿Cómo es que esto agrega algo a las respuestas existentes? El problema central era la ausencia de 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;
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.