DayPilot is loading the event start and end dates using a code similar to this:
string strStart = DataBinder.GetPropertyValue(dataItem, DataStartField, null);
if (!DateTime.TryParse(strStart, out start))
{
throw new FormatException(String.Format("Unable to convert '{0}' (from DataStartField column) to DateTime.", strStart));
}
This means the field value is read as string and then parsed. If the value is DateTime this works without problem because the same format and culture is used.
However, if you supply a DateTime string that is not formatted in accordance with the current culture it will not be parsed properly. The solution is to supply a DateTime object (in DataStartField and DataEndField) or to adjust the culture of the current thread (use <globalization> in web.config or System.Threading.Thread.CurrentThread.CurrentCulture in the code behind).