Obtenir la date et l'heure actuelles en JavaScript


449

J'ai un script qui imprime la date et l'heure actuelles en JavaScript, mais DATEc'est toujours faux. Voici le code:

var currentdate = new Date();
var datetime = "Last Sync: " + currentdate.getDay() + "/" + currentdate.getMonth() 
+ "/" + currentdate.getFullYear() + " @ " 
+ currentdate.getHours() + ":" 
+ currentdate.getMinutes() + ":" + currentdate.getSeconds();

Il devrait imprimer 18/04/2012 15:07:33et imprimer3/3/2012 15:07:33

De l'aide? Merci


10
En général, vous devez vous efforcer de lire la documentation des API que vous utilisez. Voici une documentation pour les objets Javascript Date: developer.mozilla.org/en/JavaScript/Reference/Global_Objects/… . Vous y trouverez tout ce que vous devez savoir pour résoudre votre problème.
Steven Oxley


@Ricardo: MDN est une excellente référence dans ce domaine et dans bien d'autres. Veuillez l'utiliser.
Jon

5
Les gens se plaignent toujours de certaines questions, mais il y a très peu de questions sur SO qui ne peuvent pas être répondues en lisant la documentation. J'adore ce site car il contient des réponses concises et des exemples sur la façon de faire ce que j'essaie de faire, exactement comme cette question.
Chris Sharp

3
Quand les gens vont sur Google, ils arrivent ici au lieu de l'API Doc, est-ce si mauvais de partager les connaissances sans faire en sorte que les gens se nourrissent mal?
Mauricio Gracia Gutierrez

Réponses:


577

.getMonth()renvoie un numéro de base zéro, donc pour obtenir le mois correct, vous devez ajouter 1, donc appeler .getMonth()mai reviendra 4et non 5.

Ainsi, dans votre code, nous pouvons utiliser currentdate.getMonth()+1pour sortir la valeur correcte. En plus:

  • .getDate()renvoie le jour du mois <- c'est celui que vous voulez
  • .getDay()est une méthode distincte de l' Dateobjet qui retournera un entier représentant le jour actuel de la semaine (0-6) 0 == Sundayetc

donc votre code devrait ressembler à ceci:

var currentdate = new Date(); 
var datetime = "Last Sync: " + currentdate.getDate() + "/"
                + (currentdate.getMonth()+1)  + "/" 
                + currentdate.getFullYear() + " @ "  
                + currentdate.getHours() + ":"  
                + currentdate.getMinutes() + ":" 
                + currentdate.getSeconds();

Les instances de date JavaScript héritent de Date.prototype. Vous pouvez modifier l'objet prototype du constructeur pour affecter les propriétés et méthodes héritées par les instances de date JavaScript

Vous pouvez utiliser l' Dateobjet prototype pour créer une nouvelle méthode qui renverra la date et l'heure d'aujourd'hui. Ces nouvelles méthodes ou propriétés seront héritées par toutes les instances de l' Dateobjet, ce qui le rendra particulièrement utile si vous devez réutiliser cette fonctionnalité.

// For todays date;
Date.prototype.today = function () { 
    return ((this.getDate() < 10)?"0":"") + this.getDate() +"/"+(((this.getMonth()+1) < 10)?"0":"") + (this.getMonth()+1) +"/"+ this.getFullYear();
}

// For the time now
Date.prototype.timeNow = function () {
     return ((this.getHours() < 10)?"0":"") + this.getHours() +":"+ ((this.getMinutes() < 10)?"0":"") + this.getMinutes() +":"+ ((this.getSeconds() < 10)?"0":"") + this.getSeconds();
}

Vous pouvez ensuite simplement récupérer la date et l'heure en procédant comme suit:

var newDate = new Date();
var datetime = "LastSync: " + newDate.today() + " @ " + newDate.timeNow();

Ou appelez la méthode en ligne pour qu'elle soit simplement -

var datetime = "LastSync: " + new Date().today() + " @ " + new Date().timeNow();

11
Petit changement pour 12 heures par jour et AM / PM Date.prototype.timeNow = function(){ return ((this.getHours() < 10)?"0":"") + ((this.getHours()>12)?(this.getHours()-12):this.getHours()) +":"+ ((this.getMinutes() < 10)?"0":"") + this.getMinutes() +":"+ ((this.getSeconds() < 10)?"0":"") + this.getSeconds() + ((this.getHours()>12)?('PM'):'AM'); };
Robert Speer

2
@RobertSpeer belle suggestion. J'ai écrit une méthode plus utilisable de l'objet date depuis la dernière mise à jour de cet article que j'appelle now()qui prend un paramètre booléen pour déterminer s'il faut renvoyer uniquement la date ou la date et l'heure, ainsi qu'un deuxième paramètre qui spécifie le format que la date doit être retourné en jj / mm / aaaa, etc.
Mark Walters

1
Notez que des heures comme 00:04:02 seront rendues comme 0: 4: 2 dans la première suggestion, ce qui n'est pas ce qui a été demandé. Pour corriger cela, on pourrait ajouter les opérateurs ternaires de la deuxième suggestion: (date.getHours() < 10 ? "0" : "") + date.getHours() + ":" + (date.getMinutes() < 10 ? "0" : "") + date.getMinutes() + ":" + (date.getSeconds() < 10 ? "0" : "") + date.getSeconds();
Matt

1
Peut-être un peu rudimentaire; mais l'horodatage ne devrait-il pas être stocké dans un objet temporaire pour éviter que la date / l'heure actuelle ne change pendant les méthodes de récupération / d'impression?
SaW

1
Mise à jour: ('0' + this.getDate()).slice(-2)semble plus courte que(this.getDate() < 10)?"0":"") + this.getDate()
Tân

279

Pour obtenir l'heure et la date, vous devez utiliser

    new Date().toLocaleString();

>> "09/08/2014, 2:35:56 AM"

Pour obtenir uniquement la date à utiliser

    new Date().toLocaleDateString();

>> "09/08/2014"

Pour obtenir uniquement le temps que vous devez utiliser

    new Date().toLocaleTimeString();

>> "2:35:56 AM"

Ou si vous voulez juste l'heure au format hh:mmsans AM / PM pour l'anglais américain

    new Date().toLocaleTimeString('en-US', { hour12: false, 
                                             hour: "numeric", 
                                             minute: "numeric"});
>> "02:35"

ou pour l'anglais britannique

    new Date().toLocaleTimeString('en-GB', { hour: "numeric", 
                                             minute: "numeric"});

>> "02:35"

En savoir plus ici .


3
cela fonctionne dans la plupart des navigateurs, mais vous pouvez vérifier la compatibilité ici
Quethzel Díaz

1
dommage que vous ne puissiez pas obtenir facilement des micro / millisecondes avec ceci
wordsforthewise

1
Un de plus. Je cherchais un moyen de garder les deux chiffres. J'utilisais getHours()et getMinutes()avant, mais vous n'obtenez pas le format, 01, seulement 1.
John

68

Pour ce vrai style mysql, utilisez cette fonction ci-dessous: 2019/02/28 15:33:12

  • Si vous cliquez sur le bouton "Exécuter l'extrait de code" ci-dessous
  • Il vous montrera un exemple simple d'horloge numérique en temps réel
  • La démo apparaîtra sous l'extrait de code.

function getDateTime() {
        var now     = new Date(); 
        var year    = now.getFullYear();
        var month   = now.getMonth()+1; 
        var day     = now.getDate();
        var hour    = now.getHours();
        var minute  = now.getMinutes();
        var second  = now.getSeconds(); 
        if(month.toString().length == 1) {
             month = '0'+month;
        }
        if(day.toString().length == 1) {
             day = '0'+day;
        }   
        if(hour.toString().length == 1) {
             hour = '0'+hour;
        }
        if(minute.toString().length == 1) {
             minute = '0'+minute;
        }
        if(second.toString().length == 1) {
             second = '0'+second;
        }   
        var dateTime = year+'/'+month+'/'+day+' '+hour+':'+minute+':'+second;   
         return dateTime;
    }

    // example usage: realtime clock
    setInterval(function(){
        currentTime = getDateTime();
        document.getElementById("digital-clock").innerHTML = currentTime;
    }, 1000);
<div id="digital-clock"></div>



11
var currentdate = new Date();

    var datetime = "Last Sync: " + currentdate.getDate() + "/"+(currentdate.getMonth()+1) 
    + "/" + currentdate.getFullYear() + " @ " 
    + currentdate.getHours() + ":" 
    + currentdate.getMinutes() + ":" + currentdate.getSeconds();

Modifiez la .getDay()méthode .GetDate()et ajoutez-en une au mois, car elle compte des mois à partir de 0.


5

Cela devrait faire l'affaire:

function dateToString(date) {
    var month = date.getMonth() + 1;
    var day = date.getDate();
    var dateOfString = (("" + day).length < 2 ? "0" : "") + day + "/";
    dateOfString += (("" + month).length < 2 ? "0" : "") + month + "/";
    dateOfString += date.getFullYear();
    return dateOfString;
}

var currentdate = new Date();
var datetime = "Last Sync: ";
datetime += dateToString(currentdate );
datetime += + currentdate.getHours() + ":"
            + currentdate.getMinutes() + ":"
            + currentdate.getSeconds();


4

Vous devez utiliser getDate () pour obtenir la partie date. La fonction getDay () renvoie le numéro du jour (dimanche = 0, lundi = 1 ...), et getMonth () renvoie un index basé sur 0, vous devez donc l'incrémenter de 1.

 var currentdate = new Date(); 

 var datetime = "Last Sync: " + currentdate.getDate() + "/"+  (parseInt(currentdate.getMonth())    + 1)
   + "/" + currentdate.getFullYear() + " @ "  
   + currentdate.getHours() + ":"  
   + currentdate.getMinutes() + ":" + currentdate.getSeconds(); 

4

J'ai trouvé le moyen le plus simple d'obtenir la date et l'heure actuelles en JavaScript à partir d'ici - Comment obtenir la date et l'heure actuelles en utilisant JavaScript

var today = new Date();
var date = today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate();
var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
var CurrentDateTime = date+' '+time;

3

obtenir la date et l'heure actuelles

var now = new Date(); 
  var datetime = now.getFullYear()+'/'+(now.getMonth()+1)+'/'+now.getDate(); 
  datetime += ' '+now.getHours()+':'+now.getMinutes()+':'+now.getSeconds(); 

Signale des heures telles que 00:03:04 comme 0: 3: 4.
Keir Finlow-Bates

2

.getDay renvoie le jour de la semaine. Vous avez besoin de .getDate à la place. .getMonth renvoie des valeurs de 0 à 11. Vous devrez ajouter 1 au résultat pour obtenir le numéro de mois "humain".


2

Cette question est assez ancienne et les réponses aussi. Au lieu de ces fonctions monstrueuses, nous pouvons maintenant utiliser moment.js pour obtenir la date actuelle, ce qui le rend très facile. Il suffit d' inclure moment.js dans notre projet et d'obtenir une date bien formatée, par exemple, par:

moment().format("dddd, MMMM Do YYYY, h:mm:ss a");

Je pense que cela facilite la gestion des dates en javascript.


2
Quelles fonctions monstrueuses - remplacer les oneliners ou 5 liners par plusieurs K de code blackbox?
mplungjan

2
function UniqueDateTime(format='',language='en-US'){
    //returns a meaningful unique number based on current time, and milliseconds, making it virtually unique
    //e.g : 20170428-115833-547
    //allows personal formatting like more usual :YYYYMMDDHHmmSS, or YYYYMMDD_HH:mm:SS
    var dt = new Date();
    var modele="YYYYMMDD-HHmmSS-mss";
    if (format!==''){
      modele=format;
    }
    modele=modele.replace("YYYY",dt.getFullYear());
    modele=modele.replace("MM",(dt.getMonth()+1).toLocaleString(language, {minimumIntegerDigits: 2, useGrouping:false}));
    modele=modele.replace("DD",dt.getDate().toLocaleString(language, {minimumIntegerDigits: 2, useGrouping:false}));
    modele=modele.replace("HH",dt.getHours().toLocaleString(language, {minimumIntegerDigits: 2, useGrouping:false}));
    modele=modele.replace("mm",dt.getMinutes().toLocaleString(language, {minimumIntegerDigits: 2, useGrouping:false}));
    modele=modele.replace("SS",dt.getSeconds().toLocaleString(language, {minimumIntegerDigits: 2, useGrouping:false}));
    modele=modele.replace("mss",dt.getMilliseconds().toLocaleString(language, {minimumIntegerDigits: 3, useGrouping:false}));
    return modele;
}

1
function getTimeStamp() {
       var now = new Date();
       return ((now.getMonth() + 1) + '/' + (now.getDate()) + '/' + now.getFullYear() + " " + now.getHours() + ':'
                     + ((now.getMinutes() < 10) ? ("0" + now.getMinutes()) : (now.getMinutes())) + ':' + ((now.getSeconds() < 10) ? ("0" + now
                     .getSeconds()) : (now.getSeconds())));
}

1

Ce petit code est facile et fonctionne partout.

<p id="dnt"></p>
<script>
document.getElementById("dnt").innerHTML = Date();
</script>

il y a de la place pour concevoir


1

Je pense que je suis très en retard pour partager ma réponse, mais je pense que cela vaudra la peine.

function __getCurrentDateTime(format){
    var dt=new Date(),x,date=[];
    date['d']=dt.getDate();
    date['dd']=dt.getDate()>10?dt.getDate():'0'+dt.getDate();
    date['m']=dt.getMonth()+1;
    date['mm']=(dt.getMonth()+1)>10?(dt.getMonth()+1):'0'+(dt.getMonth()+1);
    date['yyyy']=dt.getFullYear();
    date['yy']=dt.getFullYear().toString().slice(-2);
    date['h']=(dt.getHours()>12?dt.getHours()-12:dt.getHours());
    date['hh']=dt.getHours();
    date['mi']=dt.getMinutes();
    date['mimi']=dt.getMinutes()<10?('0'+dt.getMinutes()):dt.getMinutes();
    date['s']=dt.getSeconds();
    date['ss']=dt.getSeconds()<10?('0'+dt.getSeconds()):dt.getSeconds();
    date['sss']=dt.getMilliseconds();
    date['ampm']=(dt.getHours()>=12?'PM':'AM');
    x=format.toLowerCase();
    x=x.indexOf('dd')!=-1?x.replace(/(dd)/i,date['dd']):x.replace(/(d)/i,date['d']);
    x=x.indexOf('mm')!=-1?x.replace(/(mm)/i,date['mm']):x.replace(/(m)/i,date['m']);
    x=x.indexOf('yyyy')!=-1?x.replace(/(yyyy)/i,date['yyyy']):x.replace(/(yy)/i,date['yy']);
    x=x.indexOf('hh')!=-1?x.replace(/(hh)/i,date['hh']):x.replace(/(h)/i,date['h']);
    x=x.indexOf('mimi')!=-1?x.replace(/(mimi)/i,date['mimi']):x.replace(/(mi)/i,date['mi']);
    if(x.indexOf('sss')!=-1){   x=x.replace(/(sss)/i,date['sss']);  }
    x=x.indexOf('ss')!=-1?x.replace(/(ss)/i,date['ss']):x.replace(/(s)/i,date['s']);
    if(x.indexOf('ampm')!=-1){  x=x.replace(/(ampm)/i,date['ampm']);    }
    return x;
}

console.log(__getCurrentDateTime());  //returns in dd-mm-yyyy HH:MM:SS
console.log(__getCurrentDateTime('dd-mm-yyyy'));    //return in 05-12-2016
console.log(__getCurrentDateTime('dd/mm*yyyy'));    //return in 05/12*2016
console.log(__getCurrentDateTime('hh:mimi:ss'));    //return in 13:05:30

console.log (__ getCurrentDateTime ('h: mi: ss ampm')); // retour dans 1: 5: 30 PM


1

J'avais besoin de comprendre cela pour une liste de séquelles. Voici ce que j'ai trouvé après avoir pris des éléments de quelques sources différentes - Le formatage est MM / DD / YYYY HH: MM AM / PM

D = new Date(Date(00));
M = D.getMonth()+1;
H = D.getHours();
Mi = D.getMinutes();

N = "AM"
if (H >= 12)
N = "PM"
if (H > 12)
{
H = H-12
}

amtOfZeroes = 2;
isNeg = false;

if (M < 0)
{
M = Math.abs(M);
isNeg = true;
}
Mo = Math.round(M) + "";
while(Mo.length < amtOfZeroes)
{

Mo = "0" + Mo; 
}
if (isNeg)
Mo = "-" + Mo;

if (H < 0)
{
H = Math.abs(H);
isNeg = true;
}
Ho = Math.round(H) + "";
while(Ho.length < amtOfZeroes)
{
Ho = "0" + Ho; 
}
if (isNeg)
Ho = "-" + Ho;

if (Mi < 0)
{
Mi = Math.abs(Mi);
isNeg = true;
}
Min = Math.round(Mi) + "";
while(Min.length < amtOfZeroes)
{
Min = "0" + Min; 
}
if (isNeg)
Min = "-" + Min;

T = Ho + ":" + (Min)

Mo + "/" + D.getDate() + "/" + D.getFullYear() + "  " + T + " " + N

1

JS de base (bon à apprendre): nous utilisons la fonction Date () et faisons tout ce dont nous avons besoin pour afficher la date et le jour dans notre format personnalisé.

var myDate = new Date();

let daysList = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
let monthsList = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Aug', 'Oct', 'Nov', 'Dec'];


let date = myDate.getDate();
let month = monthsList[myDate.getMonth()];
let year = myDate.getFullYear();
let day = daysList[myDate.getDay()];

let today = `${date} ${month} ${year}, ${day}`;

let amOrPm;
let twelveHours = function (){
    if(myDate.getHours() > 12)
    {
        amOrPm = 'PM';
        let twentyFourHourTime = myDate.getHours();
        let conversion = twentyFourHourTime - 12;
        return `${conversion}`

    }else {
        amOrPm = 'AM';
        return `${myDate.getHours()}`}
};
let hours = twelveHours();
let minutes = myDate.getMinutes();

let currentTime = `${hours}:${minutes} ${amOrPm}`;

console.log(today + ' ' + currentTime);


Node JS (rapide et facile): installez le pagckage npm à l'aide de ( date et heure d'installation de npm ), puis exécutez ce qui suit.

let nodeDate = require('date-and-time');
let now = nodeDate.format(new Date(), 'DD-MMMM-YYYY, hh:mm:ss a');
console.log(now);

0
dt= new Date();
alert(dt.toISOString().substring(8,10) + "/" + 
dt.toISOString().substring(5,7)+ "/" + 
dt.toISOString().substring(0,4) + " " + 
dt.toTimeString().substring(0,8))

Veuillez inclure une explication de ce que fait votre code et comment il répond à la question. Si vous obtenez un extrait de code comme réponse, vous ne savez peut-être pas quoi en faire. La réponse doit donner au PO et aux futurs visiteurs des conseils sur la façon de déboguer et de résoudre leur problème. Indiquer quelle est l'idée derrière votre code aide grandement à comprendre le problème et à appliquer ou modifier votre solution.
Palec

Ce code est très primitif pour l'explication. Il suffit de l'exécuter dans la console
GraninDm

C'est primitif pour vous et maintenant. Et dans un an? Qu'en est-il pour quelqu'un qui ne lit pas JavaScript aussi couramment que vous? Je vous suggère d'ajouter quelque chose dans le sens de Utiliser une nouvelle instance de Date. Analyser les composants de date toISOString()et ajouter l'heure à partir de toTimeString(). .
Palec

Cette approche n'est pas optimale. Difficile à lire le code, implique une analyse inutile. Par exemple, toISOString().substring(8,10)c'est la même chose que getFullYear().
Palec

0
function display_c(){   
    var refresh = 1000; // Refresh rate in milli seconds    
    mytime = setTimeout('display_ct()', refresh)    
}

function display_ct() {

    var strcount    
    var currentdate = new Date();

    document.getElementById('ct').innerHTML = currentdate.toDateString() + " " + currentdate.getHours() + ":" + currentdate.getMinutes() + ":" + currentdate.getSeconds();

    tt = display_c();   
}


id = 'ct'     // Replace in Your id

onload = "display_ct();"     // Type inside a Body Tag

0

Ma réponse bien intentionnée est d'utiliser ce petit morceau de JS: https://github.com/rhroyston/clock-js

clock.now   --> 1462248501241
clock.time  --> 11:08 PM
clock.weekday   --> monday
clock.day   --> 2
clock.month --> may
clock.year  --> 2016
clock.since(1462245888784)  --> 44 minutes
clock.until(1462255888784)  --> 2 hours
clock.what.time(1462245888784)  --> 10:24 PM
clock.what.weekday(1461968554458)   --> friday
clock.what.day('14622458887 84')    --> 2
clock.what.month(1461968554458) --> april
clock.what.year('1461968554458')    --> 2016
clock.what.time()   --> 11:11 PM
clock.what.weekday('14619685abcd')  -->     clock.js error : expected unix timestamp as argument
clock.unit.seconds  --> 1000
clock.unit.minutes  --> 60000
clock.unit.hours    --> 3600000
clock.unit.days --> 86400000
clock.unit.weeks    --> 604800000
clock.unit.months   --> 2628002880
clock.unit.years    --> 31536000000

0
var datetime = new Date().toLocaleString().slice(0,9) +" "+new Date(new Date()).toString().split(' ')[4];
console.log(datetime);

0

C'est simple et superbe

 $(document).ready(function () { 
            var fpsOut = document.getElementById('myTime');
            setInterval(function () {
                var d = new Date(); 
                fpsOut.innerHTML = d;
            }, 1000);
        });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="myTime"></div>

veuillez trouver le violoneur ci-dessous pour l'exemple

http://jsfiddle.net/4zVxp/483/


0

Si quelqu'un est en recherche de fonction

console.log(formatAMPM());
function formatAMPM() {
  var date = new Date();
  var hours = date.getHours();
  var minutes = date.getMinutes();
  var seconds = date.getSeconds();
  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;
  return strTime = date.getMonth() + '/' + date.getDay()+'/'+date.getFullYear()+' '+ hours + ':' + minutes +':'+ seconds + " " +ampm;
}

-1

Vérifiez cela peut fonctionner pour vous

<script language="JavaScript">
var dayarray=new Array("Sunday","Monday",
 "Tuesday","Wednesday","Thursday","Friday","Saturday")

var montharray=new Array("January","February","March",
 "April","May","June","July","August","September",
 "October","November","December")

function getthedate(){
var mydate=new Date()
var year=mydate.getYear()
if (year < 1000)
year+=1900
var day=mydate.getDay()
var month=mydate.getMonth()
var daym=mydate.getDate()
if (daym<10)
daym="0"+daym
var hours=mydate.getHours()
var minutes=mydate.getMinutes()
var seconds=mydate.getSeconds()
var dn="AM"
if (hours>=12)
dn="PM"
if (hours>12){
hours=hours-12
}
if (hours==0)
hours=12
if (minutes<=9)
minutes="0"+minutes
if (seconds<=9)
seconds="0"+seconds
//change font size here
var cdate="<small><font color='000000' face='Arial'><b>"+dayarray[day]+", 
    "+montharray[month]+" "+daym+", "+year+" "+hours+":"
 +minutes+":"+seconds+" "+dn
    +"</b></font></small>"
if (document.all)
document.all.clock.innerHTML=cdate
else if (document.getElementById)
document.getElementById("clock").innerHTML=cdate
else
document.write(cdate)
}
 if (!document.all&&!document.getElementById)
  getthedate()
  function goforit(){
  if (document.all||document.getElementById)
 setInterval("getthedate()",1000)
}

 </script>

enter code here

 <span id="clock"></span>

-4

<p id="DateTimeBox">Click The Button To Show Date And Time</p>
<button onclick="ShowDate();"> Show Date </button>
<script>
  function ShowDate() {
    document.getElementById('DateTimeBox').innerHTML = Date();
  }
</script>


Vous devez inclure des commentaires et ne pas avoir uniquement un article uniquement en code.
codechurn
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.