C# 格式化';[$-F400]h:mm:ss\\AM/PM';Excel 2007日期时间(c)#

C# 格式化';[$-F400]h:mm:ss\\AM/PM';Excel 2007日期时间(c)#,c#,excel,datetime,openxml,closedxml,C#,Excel,Datetime,Openxml,Closedxml,我试图用c#读取Excel2007+文件,但迄今为止我尝试的所有库(OpenXML、ClosedXML和NPOI)似乎都无法正确解析时间格式的单元格 在Excel中,数据格式为数字>时间,并使用“*hh:mm:ss”作为其类型 当我查看库中的原始值时,它显示为0.04166667。我遵循了其他帖子的建议,建议使用DateTime.FromOADate,它(正确)会导致“30/12/1899 01:00:00” 我真正感兴趣的是如何显示datetime对象{30/12/1899 01:00:00}

我试图用c#读取Excel2007+文件,但迄今为止我尝试的所有库(OpenXML、ClosedXML和NPOI)似乎都无法正确解析时间格式的单元格

在Excel中,数据格式为数字>时间,并使用“*hh:mm:ss”作为其类型

当我查看库中的原始值时,它显示为0.04166667。我遵循了其他帖子的建议,建议使用DateTime.FromOADate,它(正确)会导致“30/12/1899 01:00:00”


我真正感兴趣的是如何显示datetime对象{30/12/1899 01:00:00},就像它在Excel中显示的那样:“01:00:00”。我可以看到Style.DateFormat设置为“[$-F400]h:mm:ss\AM/PM”,但如何使用它将C#中的DateTime对象格式化为字符串?ToString()方法无法将其识别为有效格式。

根据定义,日期时间始终具有日期和时间。要仅拥有时间,您必须使用
TimeSpan
。这里有一个快速的方法,你可以得到

DateTime originalDateTime = DateTime.Now;
TimeSpan hoursMinutesSeconds = originalDateTime.TimeOfDay;

我理解日期和时间组件的概念。我正在努力解决的是如何使用excel文件“[$-F400]h:mm:ss\AM/PM”中的NumberFormat字符串将datetime对象更改为字符串。我不确定您是否需要使用excel中的格式。我也不确定有没有办法。应该有一种方法可以让你在没有数据的情况下获得你想要的数据。我认为如果我们控制了文件的格式,这是真的。我们允许用户上传excel文件,因此我们不知道他们打算发送什么格式,而不查看NumberFormat字符串。我同意可能没有一种(简单的)使用格式字符串的方法,因为强制他们使用CSV不是一个选项,我们正在考虑使用google drive/sheets为我们将xlsx转换为CSV。哦,这很有意义。我不知道这就是为什么你需要这种格式。我将设法想出一个办法来做到这一点。