issue with DateTime.ToOADate()

本文关键字:ToOADate DateTime with issue | 更新日期: 2023-09-27 18:32:17

有些

东西我无法理解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 应该是相同的,对吧? 我只将普通日期转换为刻度,然后将其恢复为具有相同文化的日期时间,但实际上当我运行它时,dateTime2 的值为 (7-Jan-2011) 而不是 (1-Jul-2011)

issue with DateTime.ToOADate()

我认为

这是因为您对 ToString 的调用没有指定区域性信息。

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

当您执行DateTime.Parse时,您将指定您希望传入日期采用的格式。

执行ToString() 时,您指定应使用当前区域性来设置日期格式。

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