Comment obtenir l'heure actuelle uniquement en JavaScript


144

Comment puis-je obtenir l'heure actuelle en JavaScript et l'utiliser dans un timepicker?

J'ai essayé var x = Date()et obtenu:

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

Mais je n'ai besoin que de l'heure actuelle, par exemple, 05:45

Comment puis-je affecter cela à une variable?


15
@swati Parce que nous voulons que ce soit notre source pour tous nos problèmes de programmation. Peut-être que quelqu'un d'autre a une meilleure solution et de cette façon, ils peuvent tous être répertoriés comme référence en un seul endroit.
Alfred

27
@swati - Je sais que vous avez écrit ce commentaire il y a plus de 3 ans, mais maintenant cette page est le résultat de recherche n ° 1 sur Google pour "get time part JavaScript". Gardez à l'esprit que la question d'aujourd'hui EST les résultats de recherche de demain.
David Deutsch

@DavidDeutsch Cela devrait être comme un titre en gras sur la page Poser une question. "La question d'aujourd'hui EST les résultats de recherche de demain"
Vaulstein

Réponses:


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

ou

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 sortieNaN
Chinmay235

1
@ Chinmay235 Ajouté Tdonc maintenant c'est le bon iso universel. BTW je ne vois que undefineddans IE. Quoi qu'il en soit fixe.
Royi Namir

126

Bref et 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 heures plus tard (utilisez milisec: sec == 1000):

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

2 jours avant:

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

6
Le calcul de l'addition et de la soustraction est utile!
Dov Miller

Que devrais-je changer si je voulais ajouter 1 minute à la place?
lets0code

80

Obtenez et définissez efficacement l'heure actuelle en utilisant javascript

Je n'ai pas pu trouver une solution qui faisait exactement ce dont j'avais besoin. Je voulais un code propre et minuscule, alors j'ai trouvé ceci:

(Définissez une fois dans votre master.js et invoquez si nécessaire.)

JAVASCRIPT PUR

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


METTRE À JOUR

Il existe maintenant une prise en charge suffisante du navigateur pour utiliser simplement: toLocaleTimeString

Pour le type html5,time le format doit être 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 J'étais en retard à la fête. Merci pour le vote :)
DreamTeK

... Avez-vous tapé "get" comme "set"? Sinon, votre réponse ne correspond pas à votre titre et votre titre ne correspond pas à la question.
Fund Monica's Lawsuit

@QPaysTaxes Ma réponse fait les deux. Le javascript obtient l'heure et le html montre à l'utilisateur comment le code peut être utilisé pour régler l'heure également si nécessaire. J'ai mis à jour ma réponse pour refléter cela. merci de l'avoir signalé.
DreamTeK

l'heure indique 30 minutes de retard pour moi, si je clique sur Régler l'heure, c'est correct mais en temps militaire. L'heure définie devrait être à bascule, supposer que cela ne fonctionne pas
Ciasto piekarz

Le toLocaleTime aura un format différent en fonction de la locale du navigateur, à la place vous pouvez utiliser une locale fixe sans PM / AM comme fr pour obtenir une heure correspondant au format d'heure html5new Date().toLocaleTimeString('fr', {hour: '2-digit', minute:'2-digit'});
Tofandel

24

Essayer

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

Ou

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

Dans le second formulaire, si vous utilisez simplement toString () et changez le 0 en 4, vous obtenez également juste l'heure au format HH: MM: SS.
BigMac66

9

Tu veux dire:

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


6

Essaye ça:

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 tout ce dont vous avez besoin est du temps sans secondes et que vous n'avez pas besoin des parties PM ou AM, le code ci-dessus devrait fonctionner parfaitement.
Hamfri


3

Voici comment vous pouvez le faire.

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


1
Ce n'est ni moins cryptique ni meilleur que new Date().toTimeString().slice(0, 5).
Dan Dascalescu

1
@DanDascalescu En tant que développeur (principalement) Python, j'apprécie le cryptage en une ligne que vous avez fourni et je n'aurais pas fait défiler suffisamment la page pour voir la réponse concise de Parmeet Singh (à laquelle je suppose que vous faisiez référence). Merci!
Jason R Stevens CFA

2

ce -

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

alors-

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

1

Vous pouvez simplement utiliser ces méthodes.

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

C'est le chemin le plus court.

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

Voici également un moyen de manipuler des chaînes qui n'a pas été mentionné.

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

Le plus court est Date().substr(16, 5). Vous n'en avez pas besoin toString().
Dan Dascalescu

0

Assignez à des variables et affichez-les.

time = new Date();

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

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

Pourquoi supposer que cela doit être stocké dans un timeélément? OP a demandé le stockage dans une variable, et uniquement pour les heures et les minutes. let time = Date().substr(16, 5)est-ce que.
Dan Dascalescu

0

Fonctions simples pour séparer la date et l'heure et avec un format compatible avec l'entrée HTML de l'heure et de la date

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
En quoi cela ajoute-t-il quelque chose aux réponses existantes? Le problème central était l'absence 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;
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.