【问题标题】:Problems with set the Date and Time JQuery设置日期和时间 JQuery 的问题
【发布时间】:2014-06-15 10:44:50
【问题描述】:

当我将这部分代码添加到脚本时,它不会显示日期和时间:

    var d = new Date();
            var $fulaDate = $(d.getFullYear() + "-" + d.getMonth() 
            + "-" + d.getDate() + "T" + d.getHours() + ":" + d.getMinutes() 
            + ":" + d.getSeconds()).appendTo(div);

我不知道问题出在哪里。

Live Demo

jQuery

function addComment(name1) {

        var container = $('#divComments');
        var inputs = container.find('label');
        var id = inputs.length + 1;

        var div = $('<div />', { class: 'CommentStyle' });

        $('<label />', {
            id: 'comment' + id,
            text: name1
        }).appendTo(div);

     var d = new Date();
     var $fulaDate = $(d.getFullYear() + "-" + d.getMonth() + "-" + d.getDate() + "T" +     d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds()).appendTo(div);

        div.appendTo(container); 

    }

    $('#submit').click(function () {
        addComment($('#comments').val());
        $('#comments').val("");       
    });

【问题讨论】:

  • .getMonth() 从零开始。 0 是一月,11 是十二月。

标签: javascript jquery date time


【解决方案1】:

问题是您已经将日期字符串包装在 jQuery 选择器中,因此它不会被视为字符串,而是在寻找与该字符串匹配的元素。这是一个可行的方法,将日期信息保存为 var,然后执行 div.append($fullDate) 而不是使用 .appendTo(div)

http://jsfiddle.net/LCA72/3/

您的代码中可能还有其他错误,除了显示的问题之外,我没有深入研究任何内容......但它现在显示了您所期望的值。

【讨论】:

  • 我不知道 - 我看到有人在评论中建议您可能会错误地得到月份,所以我只是想我会注意我没有校对您的代码以供其他任何人使用问题。我并不是要暗示我发现它有任何其他问题,只是我没有验证除此之外的任何内容,这解决了您寻求帮助的特定问题。就是说 - 既然你问了,我看到的唯一问题是该月是从零开始的,如前所述。其余的在我看来都很好。
【解决方案2】:

您没有构建任何 HTML 元素,请尝试将您的文本包含在 div 中。

代码:

 var $fulaDate = $('<div>'+d.getFullYear() + "-" + d.getMonth() + "-" + d.getDate() + "T" + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds()+'</div>').appendTo(div);

演示:http://jsfiddle.net/9jsjw/

更新

如果要显示月份名称,请使用月份数组并使用月份索引获取其描述。

代码:

var monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];

var $fulaDate = $('<div>'+d.getFullYear() + "-" + monthNames[d.getMonth()] + "-" + d.getDate() + "T" + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds()+'</div>').appendTo(div);

【讨论】:

  • 如何以这种格式获取月份:“Apr”而不是“04”??
  • @AdiT 你可以用函数计算并显示出来,见:jsfiddle.net/9jsjw/1
  • 将该字符串包装在一个 div 中是一种不必要的 hack,以使滥用 jQuery 选择器正常工作。发布者应该只是创建一个字符串,然后使用 div.append() 附加它,而不是向 DOM 添加不必要的混乱元素。
  • @sphanley 不是黑客,是一种做法:stackoverflow.com/questions/1443233/… 我认为它不值得一票否决...
  • 嗯,也许投反对票是矫枉过正,但不同的是,在链接的问题中,发帖人想附加一个 div。在您的中,您正在添加一个不提供其他功能的 div,然后将字符串转换为 div 中的元素,而它们应该只是附加一个文本节点。
【解决方案3】:

将这 3 行替换为:

var d = new Date();
var $fulaDate = d.getFullYear() + "-" + d.getMonth() + "-" + d.getDate() + "T" + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds();
div.html($fulaDate);

演示:http://jsfiddle.net/LCA72/6/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多