时间秀Nan:Nan在Firefox中,Chrome工作完美

nie*_*lsv 8 javascript firefox jquery google-chrome

这是我在Google Chrome中的输出: 在此输入图像描述

这是我在Firefox中的输出: 在此输入图像描述

这是我的功能:

    function LoadSessions()
{ //LOAD SESSIONS FROM LOCALSTORAGE
    var retrievedObject = localStorage.getItem('session');

    // CALL FUNCTION
    parsePerObject(JSON.parse(retrievedObject));

    function parsePerObject(data)
    {
        // Turn the data object into an array
        var dataArray = [];
        $.each(data, function (key, value){
            dataArray.push(value);
        });

        // Sort data by starttime
        dataArray.sort(function (a, b) {
            if (a.starttime > b.starttime) return 1;
            if (a.starttime < b.starttime) return -1;
            return 0;
        });

        // Array with days of the week    
        var d_names = ["Sunday", "Monday", "Tuesday",
        "Wednesday", "Thursday", "Friday", "Saturday"];

        // Array with months of the year    
        var m_names = ["January", "February", "March", 
        "April", "May", "June", "July", "August", "September", 
        "October", "November", "December"];

        // Variables
        var content = "",
            dates = [], 
            date = {};

        // LOOP OBJECTS
        $.each(dataArray, function(i, item)
        {
            // Date
            var d = new Date(item.starttime);

            var year = d.getFullYear();
            var month = d.getMonth();
            var day = d.getDate();
            var da = d.getDay();

            date.value = year + "-" + month + "-" + day;

            // Startime & endtime
            var starttime = new Date(item.starttime);
            var endtime = new Date(item.endtime);

            var hour_starttime = starttime.getHours();
            var min_starttime = starttime.getMinutes();

            var hour_endtime = endtime.getHours();
            var min_endtime = endtime.getMinutes();

            // 12:00 instead of 12:0
            if(min_starttime < 10) min_starttime += "0";  
            if(min_endtime < 10) min_endtime += "0";

            // Loop dates
            $(date).each(function() 
            {
                // If the date is not in array dates
                if($.inArray(date.value, dates) == -1)
                {
                    date.firstchild = item.id;

                    content = "<div class='span6'><h2 id='" + item.id + "'" + " class='before-blocks'>" + d_names[da] + " " + day + " " + m_names[month] + " " + year + "</h2>";
                    content += "<ul class='sessionlist blocks unstyled'>";
                    content += "<li id='item" + item.id + "' class='contentblock has-thumb'>";
                    content += "<a href='/sessions/view/" + item.id + "'>";
                    content += hour_starttime + ":" + min_starttime + " - " + hour_endtime + ":" + min_endtime;
                    content += "<span class='ellipsis name' style='width: 95%;'><b>" + item.name + "</b></span>";
                    content += "<span class='ellipsis'><em>" + item.speaker + "</em></span></a></li>";
                    $("#here").append(content);

                    // Add date to dates 
                    dates.push(date.value);
                }

                // If the date is in array dates
                else
                {
                    var second = "<li id='item" + item.id + "' class='contentblock has-thumb'>";
                    second += "<a href='/sessions/view/" + item.id + "'>";
                    second += hour_starttime + ":" + min_starttime + " - " + hour_endtime + ":" + min_endtime;
                    second += "<span class='ellipsis name' style='width: 95%;'><b>" + item.name + "</b></span>";
                    second += "<span class='ellipsis'><em>" + item.speaker + "</em></span></a></li>";
                    $("#item" + date.firstchild).parent().append(second);    // Add li to parent (ul) of previous li
                }
                content = "</ul></div>";
                $("#here").append(content);
            });
        }); 
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的localStorage中我有这样的对象:

{ "21216":{ "ID": "21216", "EXTERNAL_ID": "", "sessiongroupid": "1861", "事件ID": "5588", "订单": "0", "名称":"使用ZF2轻松实现RESTful服务","描述":"需要了解ZF2并实现上述每项功能.","starttime":"2013-01-25 09:00:00","endtime":"2013 -01-25 12:30:00","发言人":"Matthew Weier O'Phinney,Rob Allen","location":"Tutorial Room","mapid":"0","xpos":"0.000000" "ypos": "0.000000", "地图类型": "计划", "IMAGEURL": "", "演讲": "", "组织者": "0", "推特": "", "allowAddToFavorites": "0","allowAddToAgenda":"0","vote":"0","url":" http://conference.phpbenelux.eu / ","venueid":"0"}}

难道不知道为什么我没有在firefox中得到时间它显示NaN:NaN?

Tim*_*ace 9

如果您不想更改内部存储日期的方式,并且不介意包含外部库,则如果您提供格式,moment.js将正确解析这些字符串.请参阅解析文档(http://momentjs.com/docs/#/parsing/string-format/)和格式(http://momentjs.com/docs/#/displaying/format/)

var d = new moment(item.starttime, "YYYY-MM-DD HH:mm:ss");
// To get the date as 'Friday 25th January 2013'
var datestring = d.format("dddd Do MMMM YYYY");
// To get the time as '09:30'
var timestring = d.format("HH:mm");
Run Code Online (Sandbox Code Playgroud)