DateTime.ToOaDate() で理解できなかったことがあります。
これが私が持っているものです
var plainDate = "01/07/2011";
var dateTime1 = DateTime.Parse(plainDate, new CultureInfo("en-GB"));
var value = dateTime1.ToOADate();
var dateTime2 = DateTime.Parse(DateTime.FromOADate(value).ToString(), new CultureInfo("en-GB"));
dateTime1 と dateTime2 は同じはずですよね? 単純な日付のみをティックに変換し、同じカルチャで DateTime として復元しましたが、実際に実行すると、dateTime2 の値は (1-Jul-2011) ではなく (7-Jan-2011) になります。