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?

hss
la source
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
Royi Namir
la source
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
ricaner
la source
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

DreamTeK
la source
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];
Fernando Gomes
la source
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();
Sudhir Bastakoti
la source
8

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

Parmeet Singh
la source
6

Essaye ça:

var date = new Date();
var hour = date.getHours();
var min = date.getMinutes();
StoïcFnord
la source
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
la source
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])

Parvez Rahaman
la source
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
Vibhaas Srivastava
la source
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" }));

Omer Farad
la source
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))

la source
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;
mhtmalpani
la source
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
}
AbdessamadEL
la source
-1
var today = new Date();  //gets current date and time
var hour = today.getHours();         
var minute = today.getMinutes();
var second = today.getSeconds();
Saurabh Agarwal
la source
1
En quoi cela ajoute-t-il quelque chose aux réponses existantes? Le problème central était l'absence de new.
RomainValeri
-2

Cela a fonctionné pour moi mais cela dépend de ce que vous obtenez lorsque vous frappez Date():

Date().slice(16,-12)
Luffy
la source
Cela semble identique à une réponse existante: stackoverflow.com/a/46599746/3294944
stealththeninja
@stealththeninja: ce n'est pas identique. Cela vide également le deuxième et le fuseau horaire.
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;
user9720939
la source