2012-05-14 23 views
14

Tôi đang cố gắng tìm hiểu cách tôi có thể hiển thị ngày và giờ động bằng cách sử dụng moment.js.Ngày và giờ động với moment.js và setInterval

Rõ ràng tôi không thể tìm ra để sử dụng setInterval đúng cách.

Nếu có thể tôi không muốn sử dụng jQuery vì moment.js không cần đến nó.

Đây là những gì tôi có cho đến thời điểm này: http://jsfiddle.net/37fLF/2/.

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

Trả lời

21

Tôi đã thực hiện một vài thay đổi trong mã của bạn:

Lưu ý rằng bản cập nhật phương pháp hiện nay nằm ngoài handler ready kiện

mã:

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

bản demo làm việc: jsfiddle

+0

Tôi thực sự đánh giá cao nỗ lực của bạn. Cảm ơn bạn! – bchr

+2

được cập nhật với phiên bản mới hơn của moment.js vì jsfiddle bị hỏng: http://jsfiddle.net/timrpeterson/37fLF/217/ –

+0

Cảm ơn ví dụ tuyệt vời của bạn. Bạn có thể giúp tôi làm thế nào để sử dụng thời gian UTC thay vì giờ địa phương cho cùng một mã. –

2

Đặt

date = moment(new Date()); 

bên trong hàm cập nhật. Bây giờ bạn chỉ cần in cùng ngày mỗi giây;)

+0

Cảm ơn bạn rất nhiều! Nó hoạt động;) PS: Dòng đầu tiên của bài đăng của tôi nên đi "Xin chào mọi người - đây là bài đăng đầu tiên của tôi ở đây". Tôi đã cố gắng chỉnh sửa nó sau đó nhưng nó sẽ không cập nhật. – bchr

+0

Tôi nghĩ bạn cần một số điểm trước khi bạn có thể chỉnh sửa nội dung. Tôi nghĩ rằng tôi đã có thể đẩy nó, nhưng nó có thể chỉ dành cho tôi .. – Halcyon

+0

Làm cách nào để tôi thực hiện các ngắt dòng trong các nhận xét? Bạn có biết cách tôi có thể "thoát" chuỗi không? Giống như nếu tôi có: thứ Hai 14 Tháng Năm, 2012, 10:51:01 Và muốn đầu ra ví dụ: thứ Hai 14 Tháng Năm, 2012, thời điểm đó là 22:51:01 Nếu tôi viết này: ('dddd Làm MMMM YYYY,' + 'thời gian là' + 'h: mm: ss') "thời gian" trở thành: t10e ti55e i01. – bchr

3

Một lần nữa, cảm ơn vì câu trả lời của bạn. Mã tôi đã kết thúc với sau. (Lưu ý danish 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: Ở đây chín tháng sau khi tôi hỏi quesiton này tôi đã tìm ra cách này để làm điều đó mà không cần jQuery (như tôi ban đầu hỏi). Ở đây là:

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

Và sau đó tất nhiên sử dụng nó với một ID HTML như:

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

Đây là cách nó trôi qua tôi và nó làm việc u có thể kiểm tra nó ở đây

HTML 

< asp: ID nhãn = "Label1" runat = "server" Văn bản = ''>

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> 
Các vấn đề liên quan