2009-11-04 73 views
0

我一直在使用fullCalendar一段时间,并通过json获取数据。下面列出了一个样本。完整日历:添加时间到日历的json

[{"id":2,"name":"1","title":"takvim","start":"2009-11-04","end":"2009-11-04"}] 

它工作正常,但我升级了新版本的日历,它具有议程周视图。我需要在议程周使用网格区域(小时),所以我的json必须是这样的。

[{"id":2,"name":"1","title":"takvim","start":"2009-11-04 12:30:00","end":"2009-11-04 13:30:00"}] 

另外,如果我作为静态的,我可以这样使用它

{ 
title: 'Meeting', 
start: new Date(y, m, d, 10, 30), 
allDay: false 
} 

数据不幸的是没有数据时,我想补充的时间出现。我如何解决它?

回答

0

我解决了这个问题。首先,我从here取得了一些代码并对其进行了更改。我在下面显示它...

events: function(start, end, callback) { 

    // do some asynchronous ajax 
    $.getJSON("aj_calendar_json.asp?rndtime="+new Date().getTime()+"&baseID=<%=baseId%>&depId=<%=depId%>", 
      { 
        start: start.getTime(), 
        end: end.getTime() 
      }, 
      function(result) { 

        if(result != null){ 

         for (i in result) { 

          var calEvent = result[i]; 

          var $startNew = calEvent.start.split("-") 
           $sNewYear = parseInt($startNew[0]) 
           $sNewMonth = (parseInt($startNew[1])-1) 
           $sNewDay = parseInt($startNew[2]) 
           $sNewTime = $.trim($startNew[3]) 

           if ($sNewTime != ""){ 
            $splitNewTime = $sNewTime.split(":") 
            $sNewTimeHour = $splitNewTime[0] 
            $sNewTimeMin = $splitNewTime[1] 
           } 
           else{ 
            $sNewTimeHour = 0 
            $sNewTimeMin = 0 
           }                      

          var $endNew  = calEvent.end.split("-") 
           $eNewYear = parseInt($endNew[0]) 
           $eNewMonth = (parseInt($endNew[1])-1) 
           $eNewDay = parseInt($endNew[2]) 
           $eNewTime = $.trim($endNew[3]) 

           if ($eNewTime != ""){ 
            $splitNewTime = $eNewTime.split(":") 
            $eNewTimeHour = $splitNewTime[0] 
            $eNewTimeMin = $splitNewTime[1] 
           } 
           else{ 
            $eNewTimeHour = 0 
            $eNewTimeMin = 0 
           }                                            

          calEvent.start = new Date($sNewYear , $sNewMonth , $sNewDay , $sNewTimeHour , $sNewTimeMin) 
          calEvent.end = new Date($eNewYear , $eNewMonth , $eNewDay , $eNewTimeHour , $eNewTimeMin) 

          sNewGetTime  = new Date($sNewYear , $sNewMonth , $sNewDay) 
          eNewGetTime  = new Date($eNewYear , $eNewMonth , $eNewDay) 

          if (sNewGetTime.getTime() == eNewGetTime.getTime()){ 
           calEvent.allDay = false 
          } 

         } 
        } 

        var calevents = result; 

        // then, pass the CalEvent array to the callback 
        callback(calevents); 

      }); 

} 

它看起来很复杂,但它工作正常。如果您有任何问题,请问我...

1

您的代码是okey,但我应该指出,没有办法达到json的代码小时:分钟值。至少我无法处理它。基本上,javascript日期对象如何工作?

var $date = new Date(Year,months,day,hour,min,sec) and in calendar works like this 

{ 
       title: 'Lunch', 
       start: new Date(y, m, d, 12, 0), 
       end: new Date(y, m, d, 14, 0), 
       allDay: false 
      }, 

所以你应该拆分你的值然后可以获取每个日期对象。你也应该像这样改变你的json代码。

[{"id":"1","title":"piman","start":"2009-11-04-00:00:00","end":"2009-11-04-16:00:00"}] 

可能有更简单的方法,但你知道文档是如此之差。但它工作正常,你可能想使用它这种风格......

干杯

0

IM也有这个问题,但我发现在php JSON更容易的解决方案尝试下面的代码

$startdate='Nov 11 2009 10:10:00'; 

$enddate='Nov 11 2009 12:10:00'; 

然后在你的阵列

'start' => "$startdate", 
'end' => "$enddate", 

,这就是它