2012-05-14 15 views
14

Ich versuche herauszufinden, wie ich dynamische Datum und Uhrzeit mit moment.js anzeigen kann.Dynamisches Datum und Uhrzeit mit moment.js und setInterval

Anscheinend kann ich nicht herausfinden, setInterval richtig zu verwenden.

Wenn möglich, würde ich jQuery lieber nicht verwenden, da moment.js es nicht benötigt.

Folgendes habe ich bisher: http://jsfiddle.net/37fLF/2/. Setzen Sie

$(document).ready(function() { 
    var datetime = $('#datetime'), 
     date = moment(new Date()), 
     update = function(){ 
      datetime.html(date.format('dddd, MMMM Do YYYY, h:mm:ss a')); 
     }; 
    update(); 
    setInterval(update, 1000); 
});​ 

Antwort

21

Ich habe ein paar Änderungen im Code gemacht:

Beachten Sie, dass die Methode Update ist jetzt außerhalb der ready Ereignishandler

Code:

var datetime = null, 
     date = null; 

var update = function() { 
    date = moment(new Date()) 
    datetime.html(date.format('dddd, MMMM Do YYYY, h:mm:ss a')); 
}; 

$(document).ready(function(){ 
    datetime = $('#datetime') 
    update(); 
    setInterval(update, 1000); 
}); 

Arbeits Demo: jsfiddle

+0

Ich schätze Ihre Bemühungen sehr. Vielen Dank! – bchr

+2

aktualisiert mit neueren Version von moment.js, weil die jsfiddle ist gebrochen: http://jsfiddle.net/timrpeterson/37fLF/217/ –

+0

Danke für Ihr wunderbares Beispiel. Könnten Sie mir helfen, die UTC-Zeit anstatt der Ortszeit für denselben Code zu verwenden? –

2

date = moment(new Date()); 

innerhalb der Update-Funktion. Jetzt sind Drucken Sie nur das gleiche Datum in jeder Sekunde;)

+0

Vielen Dank! Es hat funktioniert;) PS: Die erste Zeile meines Beitrags sollte gehen "Hallo an alle - das ist mein erster Beitrag hier". Ich habe versucht, es später zu bearbeiten, aber es würde nicht aktualisiert. – bchr

+0

Ich denke, du brauchst ein paar Punkte, bevor du Sachen bearbeiten kannst. Ich denke, ich konnte es schieben, aber es könnte nur für mich sein .. – Halcyon

+0

Wie mache ich Zeilenumbrüche in den Kommentaren? Wissen Sie, wie ich die Schnur "entkommen" kann? Wie, wenn ich habe: Montag, 14. Mai 2012 10.51.01 Und zum Beispiel ausgegeben werden soll: Montag, 14. Mai 2012, dem Zeitpunkt 10.51.01 ist Wenn ich schreibe Dies ist: ('dddd MMMM YYYY,' + 'die Zeit ist' + 'h: mm: ss') "die Zeit ist" wird: t10e ti55e i01. – bchr

3

Nochmals vielen dank für Ihre Antworten. Der Code, mit dem ich endete, folgt. (Anmerkung dänisch i18n)

moment.lang('da'); 

var datetime = null, date = null; 

var datetime_update = function() { 
    date = moment(new Date()); 
    datetime.html(date.format('[Lige nu: ] dddd [d.] Do MMMM YYYY [kl.] HH:mm:ss')); 
}; 

$(document).ready(function() { 
    datetime = $('#datetime'); 
    datetime_update(); 
    setInterval(datetime_update, 1000); 
}); 

EDIT: Hier 9 Monate nachdem ich diesen quesiton fragte ich auf diese Weise herausgefunden, es ohne jQuery zu tun (wie ich zunächst gefragt). Hier ist sie:

function date_time() { 
    now = moment().format('dddd [d.] Do MMMM YYYY [kl.] HH:mm:ss'); 
    document.getElementById('timer').innerHTML = now; 
    setTimeout(function() { date_time(); }, 1000); 
} 
date_time(); 

Und dann natürlich verwenden Sie es mit einer HTML-ID wie:

<span id="timer"></span> 
0

Dies ist, wie es von mir geht und seine Arbeits u kann es hier

HTML 

< asp: Label ID = "Label1" runat = "server" Text = ''>

JavaScript 
< script language="javascript" type="text/javascript"> 
function date_time() 
{ 
var dt = new Date(); 
document.getElementById('<%=Label1.ClientID%>').innerHTML = dt; 
setTimeout(function() { date_time(); }, 1000); 
} 
date_time(); 
< /script>