Excel / C# – 时间string被解释为双?

我正在编写一个从CSV文件中提取数据的程序(由于结构的原因,通过Excel更容易操作)。 有列有date和时间。 date列正确处理,但时间列(F)被解释为双精度。 例如,在下面的循环中,第一次循环中的值为0.00,第二次为0.25,第三次为0.26041666666666669,第四次为0.27083333333333331o,依此类推。

for (i = startRow; i <= endRow; i++) { PeriodSales saleRow = new PeriodSales(); DateTime saleDate = Convert.ToDateTime((sheet.Cells[i, 5] as Excel.Range).Value); var timeString = (sheet.Cells[i, 6] as Excel.Range).Value; DateTime timeOfSale; timeOfSale = new DateTime(saleDate.Year, saleDate.Month, saleDate.Day, 0, 0, 0); // the lines below were commented out for testing purposes (so I could see the value of timeString in the loop */ /* if (timeString != "0") { String[] timeArray = timeString.Split(':'); timeOfSale = new DateTime(saleDate.Year, saleDate.Month, saleDate.Day, Convert.ToInt32(timeArray[0]), Convert.ToInt32(timeArray[1]), 0); } else { timeOfSale = new DateTime(saleDate.Year, saleDate.Month, saleDate.Day, 0, 0, 0); } */ 

附件是我的电子表格/ CSV的屏幕截图 在这里输入图像说明

底层CSV(在Notepad ++中)

在这里输入图像说明 感谢您的任何指导。

你想使用timeOfSale = DateTime.FromOADate(timeString).TimeOfDay; 这将使用Excel格式转换date

这个讨论可能会回答你的问题:

从Excel单元捕获时间值

第一个答案可能是你在找什么。 可能还有一些额外的C#需要编写来获得您正在寻找的转换。