2013-04-26 121 views
7

这是我在谷歌浏览器输出: enter image description here时间显示楠:楠在Firefox,Chrome浏览器的完美

这是我在Firefox输出: enter image description here

这是我的函数:

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

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

{“21216”:{“id”:“21216”,“external_id”:“”,“sessiongroupid”:“1861”,“eventid”:“5588”,“order”:“0” :“RESTful 使用ZF2简化了服务”,“描述”:“需要了解ZF2? “,”starttime“:”2013-01-25 09:00:00“,”endtime“:”2013-01-25 12:30:00“,”speaker“:” Matthew Weier O'Phinney,Rob Allen“,”location“:”Tutorial Room“,”mapid“:”0“,”xpos“:”0.000000“,”ypos“:”0.000000“,”maptype“计划 “ ”IMAGEURL“: ”“, ”演讲“: ”“, ”组织者“: ”0“, ”推特“: ”“, ”allowAddToFavorites“: ”0“, ”allowAddToAgenda“: ”0“,” 票“:” 0" , “URL”: “http://conference.phpbenelux.eu/”, “venueid”: “0”}}

是否anyknow知道为什么我没有得到在Firefox的时间,它表明楠:?NaN的

回答

8

如果您不想更改内部存储日期的方式,并且不介意包含外部库,则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"); 
+0

谢谢!你是最好的! – nielsv 2013-04-26 12:16:05

+0

@ user1775531没问题,很高兴我可以帮忙! – Timespace 2013-04-26 13:24:42

3

而不是使用Date(string)构造函数使用Date(milliseconds)构造函数:http://www.w3schools.com/js/js_obj_date.asp

原因是Date(string)根据浏览器语言设置的不同而被解析。在你的情况下,它不会被Firefox解析(由于某些设置),因此是NaN。当然,您还需要将您的内部存储器表示更改为一个数字。

获取的时间,使用:

var time = (new Date()).getTime(); 

并加载它以后使用

var date = new Date(time); 

或者使用moment.js:http://momentjs.com/docs/

IFF开始时间为2013年1月25日的格式09 :00:00您需要使用

var starttime = moment(item.starttime,"YYYY-MM-DD HH:mm:ss") 

结束时间类似。

+0

如何将我的日期转换为数字..? – nielsv 2013-04-26 11:48:09

+0

使用getTime方法:http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_gettime – basarat 2013-04-26 11:50:39

+0

现在我这样做: var d = new Date(item.starttime); var milliseconds = d.getTime() var d2 = new Date(milliseconds); var year = d2.getFullYear(); var month = d2.getMonth(); var day = d2.getDate(); var da = d2.getDay(); 但它仍然是同样的输出.. – nielsv 2013-04-26 11:53:39

0

无关CHROM

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

时,时间是1会发生什么情况的另一个问题?您将获得10

3

根据MDN,'yyyy-MM-dd HH:mm:ss'不是有效的日期格式,因为它接受RFC2822和ISO 8601格式。并非Firefox已经破产,只是Chrome更宽容一些。 要修复Firefox中的这种情况,请使用此格式“2013-01-25T09:00:00”。

2

你可以调整你的时间字符串在Firefox中工作,方法是用'T'替换日期部分后的空格, 并在末尾附加'Z'。这也将在现代webkit工作在IE9 +浏览器。

旧的IE需要更多...

var starttime='2013-01-25 12:30:00'; 
if(starttime.indexOf('Z')==-1)starttime=starttime.replace(' ','T')+'Z'; 

var date=new Date(starttime) 

date.toUTCString() 
/* returned values: 
Firefox 20.0: Fri, 25 Jan 2013 12:30:00 GMT 
Chrome 26.0.1410.64: Fri, 25 Jan 2013 12:30:00 GMT 
MSIE 10.0: Fri, 25 Jan 2013 12:30:00 UTC 
Opera 12.12: Fri, 25 Jan 2013 12:30:00 GMT 
*/ 
+0

工作就像一个魅力! – sehummel 2015-09-08 23:32:35