导入EXCEL 时间数据为小数 问题
同事在做将EXCEL导入数据库功能时发现一个奇怪的问题:在EXCEL中,有一列数据明明呈现出时间格式,比如:18:35
,但导到数据库中,居然一串长长的小数:0.7743055555555556
,我靠,这是什么鬼。
后来发现,原来EXCEL里面,其实就是小数,只不过,设置单元格格式为时间时,就呈现 时:分 这种友好的样子;当设置为文本时,立刻原形毕露。
怎么办呢?在网上寻寻觅觅,没有头绪。这是一种什么样的时间格式?或者说,这是一种什么样的时间?为什么不是UTC?从1900年以来的,格林威治时间的秒数?
关键是要理清思路。原来,这个小数是 时分 在 一天 中的占比。也就是:
(时 * 60 + 分 ) / 24 * 60
公式的意义不言而喻(同理,如果有秒,就将时间全部换算成秒再计算就行了),细想系统这么处理也是有道理的,时间格式那么多,索性全部换成数字最准确。为啥不是什么UTC之类,因为没有日期,只有时间。
知道了原因就简单了。我们将EXCEL原原本本导入到数据库,呈现的时候,在页面换算一下就行了。换算方法如下:
时 = 小数 *24 取整(不要四舍五入)
分 = (小数 * 24 * 60 )% 60
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步