public static void Main()
Console.WriteLine("Hello World");
DateTime? dt = DateTime.Now;
var date = CrmExtensions.GetValueOrDefault(dt);
Console.WriteLine(date.ToString());
public static class CrmExtensions{
public const string LocalTimeZone = "E. Europe Standard Time";
public static T GetValueOrDefault<T>(T res)
res = ConvertGenericToLocalTimeIfIsDateTime(res);
private static T ConvertGenericToLocalTimeIfIsDateTime<T>(T res)
DateTime dt = ((DateTime)Convert.ChangeType(res, typeof(DateTime))).ToLocalTimeCustom();
return (T)Convert.ChangeType(dt, typeof(T));
DateTime? dt = ((DateTime?)Convert.ChangeType(res, typeof(DateTime?))).ToLocalTimeCustom();
return ((T)Convert.ChangeType(dt, typeof(T)));
public static DateTime? ToLocalTimeCustom(this DateTime? dateToConvert)
if (dateToConvert == null) return null;
DateTime dt = dateToConvert.GetValueOrDefault();
return System.TimeZoneInfo.ConvertTimeFromUtc(dt, TimeZoneInfo.FindSystemTimeZoneById(LocalTimeZone));
public static DateTime ToLocalTimeCustom(this DateTime dateToConvert)
return System.TimeZoneInfo.ConvertTimeFromUtc(dateToConvert, TimeZoneInfo.FindSystemTimeZoneById(LocalTimeZone));