Ottenere la data e l'ora correnti in JavaScript


449

Ho uno script che stampa la data e l'ora correnti in JavaScript, ma DATEè sempre sbagliato. Ecco il codice:

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

Dovrebbe stampare 18/04/2012 15:07:33e stampare3/3/2012 15:07:33

Qualsiasi aiuto? Grazie


10
In generale, dovresti cercare di leggere la documentazione delle API che stai utilizzando. Ecco della documentazione per gli oggetti Javascript Date: developer.mozilla.org/en/JavaScript/Reference/Global_Objects/… . Qui puoi trovare tutto ciò che devi sapere per risolvere il tuo problema.
Steven Oxley,


@Ricardo: MDN è un riferimento eccellente per questa e molte altre questioni. Per favore, usalo.
Jon,

5
Le persone si lamentano sempre di alcune domande, ma ci sono pochissime domande su SO a cui non è possibile rispondere leggendo la documentazione. Adoro questo sito perché ha risposte concise ed esempi di come fare quello che sto cercando di fare, esattamente come fa questa domanda.
Chris Sharp,

3
quando le persone google arrivano qui invece di api doc, è così male condividere le conoscenze senza fare in modo che le persone si nutrano male?
Mauricio Gracia Gutierrez,

Risposte:


577

.getMonth()restituisce un numero in base zero in modo da ottenere il mese corretto è necessario aggiungere 1, quindi la chiamata .getMonth()potrebbe tornare 4e non 5.

Quindi nel tuo codice possiamo usare currentdate.getMonth()+1per produrre il valore corretto. Inoltre:

  • .getDate()restituisce il giorno del mese <: questo è quello desiderato
  • .getDay()è un metodo separato Datedell'oggetto che restituirà un numero intero che rappresenta il giorno corrente della settimana (0-6) 0 == Sundayecc

quindi il tuo codice dovrebbe apparire così:

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

Le istanze di JavaScript Date ereditano da Date.prototype. È possibile modificare l'oggetto prototipo del costruttore per influire sulle proprietà e sui metodi ereditati dalle istanze di JavaScript Date

È possibile utilizzare l' Dateoggetto prototipo per creare un nuovo metodo che restituirà la data e l'ora di oggi. Questi nuovi metodi o proprietà saranno ereditati da tutte le istanze Datedell'oggetto, rendendolo quindi particolarmente utile se è necessario riutilizzare questa funzionalità.

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

È quindi possibile recuperare semplicemente la data e l'ora nel modo seguente:

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

O chiama il metodo in linea in modo che sia semplicemente -

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

11
Piccolo cambio per 12 ore al giorno e 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 bel suggerimento. Ho scritto un metodo più utilizzabile dell'oggetto data dall'ultimo aggiornamento di questo post che chiamo now()che accetta un parametro booleano per determinare se restituire solo la data o sia la data che l'ora, e anche un secondo parametro che specifica il formato in cui la data dovrebbe essere restituito in gg / mm / aaaa ecc.
Mark Walters,

1
Nota che volte come 00:04:02 verranno visualizzate come 0: 4: 2 nel primo suggerimento, cosa che non è stata richiesta. Per risolvere questo, si potrebbero aggiungere gli operatori ternari del secondo suggerimento: (date.getHours() < 10 ? "0" : "") + date.getHours() + ":" + (date.getMinutes() < 10 ? "0" : "") + date.getMinutes() + ":" + (date.getSeconds() < 10 ? "0" : "") + date.getSeconds();
Matt

1
Forse un po 'nitido; ma il timestamp non dovrebbe essere memorizzato in un oggetto temporaneo per evitare che la data / ora corrente cambi durante i metodi di recupero / stampa?
Visto il

1
Aggiornamento: ('0' + this.getDate()).slice(-2)sembra più breve di(this.getDate() < 10)?"0":"") + this.getDate()
Tân

279

Per ottenere ora e data è necessario utilizzare

    new Date().toLocaleString();

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

Per ottenere solo la data che dovresti usare

    new Date().toLocaleDateString();

>> "09/08/2014"

Per ottenere solo il tempo che dovresti usare

    new Date().toLocaleTimeString();

>> "2:35:56 AM"

O se vuoi solo l'ora nel formato hh:mmsenza AM / PM per l'inglese americano

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

o per l'inglese britannico

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

>> "02:35"

Leggi di più qui .


3
funziona nella maggior parte dei browser, ma puoi verificarne la compatibilità qui
Quethzel Díaz,

1

1
Più uno. Stavo cercando un modo per mantenere entrambe le cifre. Stavo usando getHours()e getMinutes()prima, ma poi non ottieni il formato, 01, solo 1.
John

68

Per questo vero stile mysql usa questa funzione qui sotto: 2019/02/28 15:33:12

  • Se fai clic sul pulsante "Esegui frammento di codice" di seguito
  • Ti mostrerà un semplice esempio di orologio digitale in tempo reale
  • La demo apparirà sotto lo snippet di codice.

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

Cambia .getDay()metodo in .GetDate()e aggiungi uno al mese, perché conta mesi da 0.


5

Questo dovrebbe fare il trucco:

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

getDay()ottiene il giorno della settimana. 3è mercoledi. Vuoi getDate(), questo tornerà 18.

Inoltre getMonth()inizia alle 0, è necessario aggiungere 1per ottenere 4(aprile).

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


4

È necessario utilizzare getDate () per ottenere la parte della data. La funzione getDay () restituisce il numero del giorno (domenica = 0, lunedì = 1 ...) e getMonth () restituisce un indice basato su 0, quindi è necessario incrementarlo di 1.

 var currentdate = new Date(); 

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

4

Ho trovato il modo più semplice per ottenere la data e l'ora correnti in JavaScript da qui - Come ottenere la data e l'ora correnti utilizzando 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

ottenere la data e l'ora correnti

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

Riporta orari come 00:03:04 come 0: 3: 4.
Keir Finlow-Bates,

2

.getDay restituisce il giorno della settimana. È invece necessario .getDate. .getMonth restituisce valori da 0 a 11. Dovrai aggiungere 1 al risultato per ottenere il numero del mese "umano".


2

Questa domanda è piuttosto vecchia e anche le risposte lo sono. Invece di quelle mostruose funzioni, ora possiamo usare moment.js per ottenere la data corrente, il che in realtà lo rende molto semplice. Tutto ciò che deve essere fatto è includere moment.js nel nostro progetto e ottenere una data ben formata, ad esempio:

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

Penso che sia più facile gestire le date in javascript.


2
Quali mostruose funzioni: sostituire gli oneliners o 5 liner con una K di codice 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

Questo piccolo codice è semplice e funziona ovunque.

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

c'è spazio per il design


1

Penso di essere in ritardo per condividere la mia risposta, ma penso che varrà la pena.

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')); // ritorno in 1: 5: 30 PM


1

Avevo bisogno di capirlo per una lista di effetti collaterali. Ecco cosa mi è venuto in mente dopo aver preso elementi da alcune fonti diverse: la formattazione è MM / GG / AAAA 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 di base (buono da imparare): usiamo la funzione Date () e facciamo tutto il necessario per mostrare la data e il giorno nel nostro formato personalizzato.

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


Nodo JS (rapido e semplice): installa il nck pagckage usando ( npm installa data e ora ), quindi esegui quanto segue.

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

Includi la spiegazione di ciò che fa il tuo codice e di come risponde alla domanda. Se ricevi uno snippet di codice come risposta, potresti non sapere cosa farne. La risposta dovrebbe fornire all'OP e ai futuri visitatori indicazioni su come eseguire il debug e risolvere il problema. Sottolineando quale sia l'idea alla base del codice, aiuta notevolmente a comprendere il problema e ad applicare o modificare la soluzione.
Palec,

Questo codice è molto primitivo per la spiegazione. Basta eseguirlo in console
GraninDm

È primitivo per te e ora. Che dire tra un anno? Che dire di qualcuno che non legge JavaScript così bene come te? Ti suggerisco di aggiungere qualcosa sulla falsariga di Usa nuova istanza di Date. Analizzare i componenti della data da toISOString()e aggiungere l'ora da toTimeString(). .
Palec,

Questo approccio non è ottimale. Difficile leggere il codice, comporta un'analisi non necessaria. Ad esempio toISOString().substring(8,10)è lo stesso di 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

La mia risposta ben intenzionata è quella di utilizzare questo piccolo bit di 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

È semplice e superbo

 $(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>

si prega di trovare il violinista di seguito per l'esempio

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


0

Se qualcuno è alla ricerca della funzione

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

Dai un'occhiata a questo potrebbe essere che funzionerà per te

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


Dovresti includere alcuni commenti e non avere solo un post di solo codice.
codechurn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.