6

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 的值是 (7-Jan-2011) 而不是 (1-Jul-2011)

4

2 回答 2

5

我认为这是因为您对 ToString 的调用未指定文化信息。

也试试ToString(new CultureInfo("en-GB"))

于 2012-04-26T16:14:38.627 回答
5

当你这样做时DateTime.Parse,你正在指定你期望传入日期的格式。

当您这样做时ToString(),您指定应使用当前文化来格式化日期。

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

于 2012-04-26T16:15:07.083 回答