【问题标题】:Date Format - C# - Conversion日期格式 - C# - 转换
【发布时间】:2019-02-28 16:06:53
【问题描述】:

我从数据库中提取数据到 Excel,日期列以这种格式表示。

38876,588587963

我现在正尝试用 C# 读取此文件并将日期转换为 DateTime 格式。有人可以告诉我这种日期格式。

当我尝试创建 DateTime 对象时,软件会抛出错误。

DateTime dt = new DateTime("38876,588587963");

【问题讨论】:

  • DateTime.FromOADate(38876.588587963) == 08/06/2006 14:07:34 怎么样?
  • 您是如何从 Excel 中读取值的?如果单元格的格式样式设置为与日期或时间相关的样式,则 EPPlus 或 OLEDB 驱动程序等库将返回 DateTime 值
  • 你是如何读取这个值的?例如,您是否在不需要它的地方执行 .ToString() ?

标签: c# excel date datetime


【解决方案1】:

您可以使用DateTime 中的FromOADate 方法将其转换为DateTime。但是,该方法接受一个不适用于当前格式的 double,将其解析为 double 并设置如下文化设置:

string output = "38876,588587963";
DateTime dt = DateTime.FromOADate(double.Parse(output, CultureInfo.CurrentCulture));

或者,如果您知道文化将永远是 fr-CA,您可以这样做:

DateTime dt = DateTime.FromOADate(double.Parse(output, CultureInfo.CreateSpecificCulture("fr-CA")));

【讨论】:

  • @RufusL 我刚刚更新了我的答案。你是对的,使用CultureInfo 是一种更好的方法。
猜你喜欢
  • 2012-12-15
  • 1970-01-01
  • 2013-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-24
  • 2017-12-23
相关资源
最近更新 更多