DateTime.ToOADate()的问题

6 c# datetime

有一些我无法理解的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"));
Run Code Online (Sandbox Code Playgroud)

dateTime1和dateTime2应该是一样的吧?我只将普通日期转换为刻度,然后将其恢复为具有相同文化的DateTime,但实际上当我运行它时,dateTime2的值为(2011年1月7日),而不是(2011年7月1日)

Fio*_*ite 5

我认为这是因为您对ToString的调用没有指定文化信息.

试试吧ToString(new CultureInfo("en-GB")).


Luk*_*oid 5

执行此操作时DateTime.Parse,您将指定预期传入日期所在的格式.

执行此操作时ToString(),您指定应使用当前区域性来格式化日期.

在这里,我猜你Thread.CurrentThread.CurrentCulture.DateTimeFormat正在返回美国格式.因此,DateTime.FromOADate(value).ToString()返回07/01/2011,当您使用en-GB解析它时,它返回1月7日.