2014-12-10 12 views
13

Tôi đang thực hiện chức năng đặt chỗ xe được hỗ trợ toàn bộ theo lịch. Đây là tệp coffescript.Ngày kết thúc Fullcalendar không đúng vào một ngày

updateEvent = (event, delta, revertFunc) -> 
     $.ajax 
     type: "PUT" 
     dataType: "json" 
     success: (data) -> 
      alert "Success" 
     error: (data) -> 
      revertFunc() 
      errors = data.responseJSON.reservations[0][1] 
      for message of errors 
       alert errors[message] 
     url: event.updateUrl 
     data: 
      reservation: 
      reservation_start: event.start.format('DD-MM-YYYY') 
      reservation_end: event.end.format('DD-MM-YYYY') 
      transport_id: event.transport_id 
      user_id: event.user_id 

$(document).ready -> 
    $(".calendar").fullCalendar 
    events: gon.path 
    eventDrop: updateEvent 
    eventResize: updateEvent 

Và đây là nguồn cấp dữ liệu JSON với sự kiện.

[{"start":"2014-12-17T00:00:00.000Z","end":"2014-12-21T00:00:00.000Z","title":"Cassio Godinho","url":"/reservas/44/edit","allDay":true,"editable":true,"updateUrl":"/reservation/44","transport_id":1,"user_id":1}] 

Ngày end2014-12-21 nhưng đây là những gì tôi có trên lịch enter image description here

Các tài liệu nói điều gì đó về vấn đề này (tôi nghĩ):

endParam 
It is the moment immediately after the event has ended. For example, if the last full day of an event is Thursday, the exclusive end of the event will be 00:00:00 on Friday! 

Nhưng im không khá chắc chắn những gì để làm với thông tin này ...

Trả lời

6

Tôi nghĩ từ khóa trong chỉ đường là exclusive vì vậy bất kỳ thời điểm nào bạn chỉ định sẽ không được bao gồm trong phạm vi ngày.

Vì vậy, trong trường hợp của bạn "2014-12-21T00:00:00.000Z" có nghĩa là sự kiện sẽ không còn tồn tại ở đầu từ 12-21 nữa. Nếu bạn muốn sự kiện này trải qua 12-21, bạn muốn đặt thời gian kết thúc thành "2014-12-22T00:00:00.000" (lần đầu tiên có thể trong 12-22).

+0

Điều này không tốt cho người nào đó sử dụng nhiều sự kiện cả ngày, vì việc thêm thời gian sẽ ngăn không cho một người thay đổi kích thước sự kiện trong chế độ xem theo tháng. Nó sẽ là tuyệt vời nếu có một shim mà chỉ ép buộc nhiều ngày tất cả các sự kiện ngày để làm cho đến ngày kết thúc. Cũng cần phải sửa chữa để thay đổi kích thước các sự kiện này kể từ ngày kết thúc luôn được đặt lâu hơn một ngày so với hiển thị trực quan. – JerryA

+2

Vì vậy, có nghĩa là, tôi tăng ngày. Thats tốt, không có bất kỳ sửa chữa mà fullcalendar đã cung cấp chưa? Có cách nào để bao gồm cả ngày kết thúc không? –

0

Nếu bạn đặt ngày kết thúc của mình trong 0 giờ, phút, giây, v.v. 12-21-2014, không có thời gian trong ngày đó để sự kiện hiển thị.

Bạn có thể cần phải kết thúc ngày kết thúc của mình thành 0 giờ của ngày tiếp theo vì bạn đã thiết lập sự kiện làm sự kiện cả ngày, tuy nhiên bạn cũng có thể chỉ cần tăng thời gian (chẳng hạn như một giờ) rằng sự kiện nằm bên trong ngày kết thúc mong muốn, sau đó là một sự kiện cả ngày nó sẽ hiển thị.

Sẽ thật tuyệt nếu đối tượng sự kiện của họ bao gồm thông số thời lượng bạn có thể đặt, ít nhất là tôi không thấy thông tin trong tài liệu của họ.

+0

Tôi đã cố gắng aproach thêm một số lượng thời gian cho sự kiện này nhưng nó đã không đi rất tốt (khi tôi kéo một sự kiện nó sẽ thêm một ngày để nó). Dù sao nó không có vẻ đúng với tôi, vì sự kiện đã có 'allDay: true' –

1

tôi đã cùng một vấn đề, nhưng tôi đã thử nghiệm với thời gian và đó là độ phân giải :)

2014-12-21T00: 00: 00 => 2014-12-21T23: 59: 00 chí này giải quyết vấn đề của bạn.

+0

Điều này gần như, nhưng không hoàn toàn, chính xác: các tài liệu chỉ ra rằng' endParam' là thời điểm "ngay lập tức * sau *" kết thúc, vì vậy bạn không bao gồm thêm một phút nữa. –

+0

Tôi đã thêm thời gian vào ngày kết thúc, nhưng sau đó các sự kiện không còn có thể điều chỉnh được trong chế độ xem theo tháng. – JerryA

0

"Đã khắc phục" sự cố bằng cách đặt thời gian bắt đầu và kết thúc cho sự kiện.

+0

ah? bạn có thể giải thích chính xác bạn đã làm gì không? –

+0

Có, vui lòng giải thích - Tôi hiện đang thiết lập bắt đầu và kết thúc và có vấn đề này. – raison

+0

Bạn vẫn có thể thay đổi kích thước sự kiện trong Chế độ xem theo tháng không? – JerryA

1

Phần tốt nhất là gắn 20:00:00 đến ngày kết thúc như sau:

var ed = $("endDate").val(); 
newVar = ed+" 20:00:00"; 

Thats tất cả các bạn cần.

1

Tôi đã gặp vấn đề tương tự và cuối cùng tôi đã tìm ra.

Tôi đã sử dụng TRUE cả ngày, theo tài liệu nếu bạn sử dụng đúng ngày, nó sẽ hoạt động đúng lúc.

vì vậy đầu tiên, tôi đã thay đổi ngày để FALSE, sau đó

trong ngày cuối của tôi, tôi thêm $ ENDDATE "T23: 59: 00";.

Điều này phù hợp với tôi.

0

Tôi không biết nếu nó vẫn còn hữu ích, nhưng bạn có thể sử dụng phương pháp này, thêm một ngày để ngày cuối cùng của bạn sử dụng:

$date = new DateTime('2000-01-01'); 
$date->add(new DateInterval('P0Y0M1DT0H0M0S')); 

này sẽ tăng ngày kết thúc của bạn bằng một ngày.

+0

Không phải '$ date = new DateTime ('2000-01-01'); $ date-> modify ('+ 1 day'); 'có thể đọc được nhiều hơn? –

Các vấn đề liên quan