_docs-v6/event-model/event-parsing.md
When you give your calendar event data, whether it's through an array, a json feed, or the addEvent method, you specify the event as a plain JavaScript object with properties. This object then gets "parsed" into a proper Event Object that is then exposed in other parts of the API, like the event render hooks method.
This article describes all the properties you may supply in your plain, pre-parsed object. To demonstrate the simplest case:
var calendar = new Calendar(calendarEl, {
events: [
{ // this object will be "parsed" into an Event Object
title: 'The Title', // a property!
start: '2018-09-01', // a property!
end: '2018-09-02' // a property! ** see important note below about 'end' **
}
]
})
Here are all the available properties, all of which are optional:
<table> <tr> <th>id</th> <td markdown='1'> String or Integer. Will uniquely identify your event. Useful for [getEventById](Calendar-getEventById). </td> </tr> <tr> <th>groupId</th> <td markdown='1'> String or Integer. Events that share a `groupId` will be dragged and resized together automatically. </td> </tr> <tr> <th>allDay</th> <td markdown='1'> Boolean (`true` or `false`). Determines if the event is shown in the "all-day" section of the view, if applicable. Determines if time text is displayed in the event. If this value is not specified, it will be inferred by the `start` and `end` properties. See notes below.Do not put quotes around this value. That would make it a string, not a boolean.
</td> </tr> <tr> <th>start</th> <td markdown='1'> Something [date-parseable](date-parsing). When your event begins. If your event is explicitly `allDay`, hour, minutes, seconds and milliseconds will be ignored. </td> </tr> <tr> <th>end</th> <td markdown='1'> Something [date-parseable](date-parsing). When your event ends. If your event is explicitly `allDay`, hour, minutes, seconds and milliseconds will be ignored. If omitted, your events will appear to have the default duration. See [defaultAllDayEventDuration](defaultAllDayEventDuration), [defaultTimedEventDuration](defaultTimedEventDuration), and [forceEventDuration](forceEventDuration) for more info.Note: This value is exclusive. For example, if you have an all-day event that has an end of 2018-09-03, then it will span through 2018-09-02 and end before the start of 2018-09-03.
There are 3 date-related properties of events to highlight:
allDayIf an event object does not explicitly define an allDay value, FullCalendar will do its best to guess whether it is an all-day event or not. It will look at the start and end values of your supplied event, and if, for example, both are ISO8601 strings in the format 2018-09-01 without time parts, it will infer allDay as true. If the time parts of only start or end is provided, FullCalendar assumes that allDay is false.
startAs defined above, this is the date when an event begins. In other words, the event starts from this given date value and continues onwards. This value specifies the inclusive start of the event. In effect, if allDay is not explicitly set to true and start is 2018-09-01, internally, this is recognised as 2018-09-01T00:00:00.
endAs defined above, this is the date when an event finishes. In other words, the event continues up to this cut-off point in time. This value specifies the exclusive end of the event. Since the event is not expected to continue beyond the given end date it may also be described as non-inclusive.
Again, if allDay is not explicitly set to true and end is 2018-09-07, internally this is recognised as 2018-09-07T00:00:00. It is that point in time, at the final part of 2018-09-06 and beginning of 2018-09-07. Also, this may be interpreted as 2018-09-06T23:59:59 or 2018-09-07T00:00:00.
FullCalendar handles these dates in the same way as discussed in the iCalendar Specifications (RFC 5545) and Google Calendar API documentation.
In summary, start date is inclusive while end date is exclusive. In order to avoid inconsistencies, applications should consider passing ISO8601 strings with datetime values for start and end dates to FullCalendar, if allDay is false.