使用moment.js和setInterval的动态日期和时间
我试图找出如何使用moment.js显示动态日期和时间。
显然我无法理解正确使用setInterval。
如果可能的话我宁愿不使用jQuery作为moment.js也不需要它。
这是我到目前为止所拥有的: 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); });
我在你的代码中做了一些修改:
请注意,方法更新现在位于ready
事件处理程序之外
码:
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); });
工作演示: jsfiddle
再次,谢谢你的回答。 我最终得到的代码如下。 (注意丹麦语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); });
编辑 :在我问这个问题九个月后,我想出了这种方法,没有jQuery(我最初的问题)。 这里是:
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();
然后当然使用HTML ID,如:
放
date = moment(new Date());
更新function内部。 现在你只是每秒打印相同的日期;)
这就是我的工作方式和它的工作原理你可以在这里查看
HTML
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>