【问题标题】:Dynamic date and time with moment.js and setInterval使用 moment.js 和 setInterval 的动态日期和时间
【发布时间】:2012-05-14 20:21:51
【问题描述】:

我正在尝试了解如何使用 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);
});​

【问题讨论】:

    标签: javascript jquery setinterval momentjs


    【解决方案1】:

    date = moment(new Date());
    

    在更新函数内部。现在你只是每秒打印相同的日期;)

    【讨论】:

    • 非常感谢!它起作用了;) PS:我的帖子的第一行应该是“大家好——这是我在这里的第一篇文章”。之后我尝试对其进行编辑,但它不会更新。
    • 我认为您需要一些要点才能编辑内容。我想我已经能够推动它,但它可能只适合我..
    • 如何在 cmets 中进行换行?你知道我如何“逃脱”字符串吗?就像我有:2012 年 5 月 14 日星期一,晚上 10:51:01 并且想要输出例如:2012 年 5 月 14 日星期一,时间是晚上 10:51:01 如果我这样写:('dddd Do MMMM YYYY , '+'时间是'+' h:mm:ss') "时间是" 变成:t10e ti55e i01.
    • 这样做:datetime.html(date.format('dddd, MMMM Do YYYY') + ' The time is: ' + date.format('h:mm:ss a'));
    • 你也可以只做date = moment(),因为没有参数的调用时刻和moment(new Date())是一样的。 momentjs.com/docs/#/parsing/now
    【解决方案2】:

    我对你的代码做了一些修改:

    请注意,方法更新现在位于 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

    【讨论】:

    • 非常感谢您的努力。谢谢!
    • 更新了较新版本的 moment.js,因为 jsfiddle 已损坏:jsfiddle.net/timrpeterson/37fLF/217
    • 感谢您的精彩示例。你能帮我如何在同一代码中使用 UTC 时间而不是本地时间吗?
    【解决方案3】:

    再次感谢您的回答。我最终得到的代码如下。 (注意丹麦语 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 一起使用:

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

    【讨论】:

      【解决方案4】:

      这就是我的工作方式,你可以在这里查看

      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>
      

      【讨论】:

        猜你喜欢
        • 2017-07-13
        • 1970-01-01
        • 2017-12-10
        • 1970-01-01
        • 2019-06-10
        • 1970-01-01
        • 1970-01-01
        • 2019-09-23
        • 1970-01-01
        相关资源
        最近更新 更多