C#转换Excel中[hh]:mm格式时长(227:20)显示异常求助
问题解决:Excel超长时长[hh]:mm转C#后显示异常
问题原因
Excel中[hh]:mm格式的时长(如227:20),实际存储的是以天为单位的小数数值(227小时20分钟 = 227/24 + 20/(24*60) ≈9.472222天)。你用DateTime.FromOADate()转换时,会把这个数值解析为「基准日期+9.472222天」,提取时间部分时只会取当天剩余的11小时20分钟,所以显示为11:20。
解决方案
改用TimeSpan处理,它专门用于表示时间间隔,支持超过24小时的时长:
// 读取Excel单元格的时长数值(以天为单位) double durationDays = (double)ws.Cells[rowNum, 17].Value; // 转换为TimeSpan对象 TimeSpan totalDuration = TimeSpan.FromDays(durationDays); // 格式化为「总小时:分钟」的形式,确保分钟为两位 model.ezafekari = $"{(int)totalDuration.TotalHours}:{totalDuration.Minutes:D2}";
这样就能正确输出227:20到GridView中。
内容的提问来源于stack exchange,提问作者Mahdi Moein
相关产品推荐
相关产品推荐

