the next line in geDateTime class is incorrect:
return DateTime.ToString("yyyy-MM-ddThh:mm:ss") + TimeZoneString;
it must be:
return DateTime.ToString("yyyy-MM-ddTHH:mm:ss") + TimeZoneString;