在C#中从Excel读取时间显示格式

时间:2018-08-09 11:31:14

标签: c# asp.net excel time

我正在像这样读取时间类型的单元格:

var daysFrom1900 = Convert.ToDouble(cell.CellValue.Text);
content = DateTime.FromOADate(daysFrom1900).ToString("HH:mm");

我正在读取的单元格中的数据显示为“ 09:00 AM”,并且正在读取的内容是值为“ 09:00”的字符串,这是因为我强制使用格式。如何从Excel文件中获取显示格式并将相同格式应用于字符串?基本上,我希望内容为“ 09:00”(如果这是单元格中的显示值),并且为“ 09:00 AM”(如果它在单元格中显示AM / PM)。

它们在单元格中具有相同的值,但显示不同。我想要什么?

插入代码Cell.CellValue.Text = 0.375

2 个答案:

答案 0 :(得分:1)

你可以尝试'tt'

content = DateTime.FromOADate(daysFrom1900).ToString("HH:mm tt"); // should return 09.00 AM

see this link。对于日期和时间格式非常有帮助

  

tt AM / PM(例如AM或PM)

希望此行对您有帮助。

答案 1 :(得分:-1)

string parseExcelHour(string cellInput){

double excelHour = 0;

try{
    excelHour = Double.Parse(cellInput);
}catch { }

int hour = (int) (excelHour * 24);
// with the int cast you get only an integer.
int min = (int) (excelHour * 1440 % 60); 
//mod (%) takes only the remainder and then the cast to int will round the number

return (hour < 10? "0":"") + hour + ":" + (min < 10? "0":"") + min + (hour > 12 ? “Pm”:”am”);
}