2009-11-04 173 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", 

,這就是它