【发布时间】:2020-05-02 13:03:40
【问题描述】:
当我尝试将 excel 文件导入 C# 对象时,我注意到到目前为止,创建包含特定区域性信息和特定单元格的日期时间格式的 dateTime 类型的唯一方法是转换为字符串。
例如可以实例化:
var date = new DateTime(DateTime.Now.Ticks, DateTimeKind.Unspecified);
var culturedDateString = date.ToString(specifiedCulture);
但我还没有看到任何可以同时包含日期时间值以及 Excel 单元格可能包含的特定cultureInfo 和日期时间格式的 c# 对象。
请让我知道 c# 中是否有任何等效类型可以同时包含 dateTime 和特定文化信息,包括 datetimeFormat。否则我需要考虑采取不同的方法。
【问题讨论】:
-
如果谁投票支持关闭,我希望有人比我更了解我在 C# 类型中看到的限制。使用 DateTime 或任何其他 C# 类型的问题在于,没有可以包含特定cultureInfo 的对象的等效对象,因此稍后可以将此类型恢复为所需的字符串表示形式,就像Excel 保存值的方式一样。目前没有可能的两种方式从具有特定文化格式或 Excel 日期值的日期时间的字符串表示形式 -> C# 类型 -> 返回值
-
关于上面的链接,您需要了解该字符串表示是 mm/dd/yyyy 还是 dd/mm/yyyy 格式(Parse 或 TryParse 的第一个参数)。 Excel 中的某些对象包含该信息,以便您可以转换解释特定的cultureInfo。尝试将特定的cultureInfo 保存为 DateTime 类型。让我知道是否有任何 C# 类型可以支持它。否则充其量创建一个自定义类型并以某种方式包含文化信息然后我需要弄清楚该类型在整个系统中的转换(数据集,到数据库,回到对象层等)
-
您应该从您正在使用的 Excel 库中获取一个 DateTime 对象。您应该将该 DateTime 放入数据库中,并仅在屏幕上打印该日期时转换为字符串。除非允许用户编辑日期,否则您通常永远不会将字符串解析为 DateTime。
-
这就是为什么在上面的线程中提到了特定的自定义类型来包含特定的文化信息。您还能如何将正确的导出 Excel 文件从您的数据库返回给用户(包括任何日期时间值的正确文化格式)?例如,一旦在数据库中保存为字符串,当您尝试检索返回以导出为 Excel 数据时,无法知道它是 dd/mm/yyyy 还是 mm/dd/yyyy。
标签: c# datetime datetime-format