我对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的值为(2011年1月7日),而不是(2011年7月1日)
答案 0 :(得分:5)
我认为这是因为您对ToString的调用未指定文化信息。
也请尝试ToString(new CultureInfo("en-GB"))
。
答案 1 :(得分:5)
当您执行DateTime.Parse
时,您指定了预期传入日期所在的格式。
执行ToString()
时,您指定应使用当前文化格式化日期。
在这里,我猜你的Thread.CurrentThread.CurrentCulture.DateTimeFormat
正在返回美国格式。因此,DateTime.FromOADate(value).ToString()
返回07/01/2011
,当您使用en-GB解析它时,它将返回1月7日。