DateTime.ToOADate()的问题

时间:2012-04-26 16:10:11

标签: 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"));

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

2 个答案:

答案 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日。

相关问题