Sharepoint сохраняет все поля даты в UTC. То есть, если вы сохраняете поле даты и времени в списке, Sharepoint фактически преобразует выбранное вами время в UTC и преобразовывает его обратно в любой часовой пояс, в котором находится человек при получении.
Начните с проверки, есть ли разница между часовым поясом вашего сервера и вашим клиентом. При использовании любого API SharePoint всегда будет возвращать время UTC и предоставит вам возможность выполнить преобразование в вашем интерфейсе или приложении.
Если вы хотите решить эту проблему по-другому, вы не можете использовать тип данных datetime, вместо этого хранить даты в текстовых полях.
== ОБНОВЛЕНИЕ ==
Если вы получили дату от SharePoint (всегда в формате UTC) и просто хотите преобразовать ее в местное время, это хорошая практика
DateTime localDateTime = sharePointDate.ToLocalTime();
Если вы получили дату в виде строки, или не уверены в форматировании и т.д., это может быть хорошим подходом
string dateStr = ("2/18/2012 9:49:51 PM").ToString(CultureInfo.InvariantCulture);
DateTime convertedDate = DateTime.SpecifyKind(DateTime.Parse(dateStr), DateTimeKind.Utc);
DateTime localDateTime = convertedDate.ToLocalTime();
// Outputs 2/18/2012 10:49:51 PM since I'm +1 in sweden