在Excel文件中,我有一个hour:minute
时间格式,该Excel文件中的一个值的示例是:"19:15"
将该文件上传到我的应用程序后,它将被读取为"0.8020833333333334"
。
我想将该值从列("0.8020833333333334"
(转换为小时和分钟。
以下是我迄今为止所取得的成就:
const extractTime = new Date(Math.round((0.8020833333333334 - 25569) * 864e5));
结果不是我所期望的。
如何将此数字转换为小时19,分钟15?
我一直"挖掘;关于StackOverflow的问题,我的答案是基于这个问题的答案以及ECMA的日期时间。大多数情况下,我的答案都是基于这个答案。
在你可以看到的评论中,如果你使用日期-时间值,就会出现问题,基于这个评论:
此语法错误,原因有二:1(中的最终Date构造函数返回值将创建作为本地时间的时间-results将根据客户的不同而有所不同。2( 解决方案不采用1900将闰年错误考虑在内。我相信我的解决方案解决了这两个问题。https://stackoverflow.com/a/57184486/12826055
如果有人使用日期-时间格式,我建议使用引号内链接的答案,但如果您只有time(19:30->0.8020833333333334(和类似内容,则使用以下代码是正确的。
代码:
var serial = 0.8020833333333334
var fractional_day = serial - Math.floor(serial) + 0.0000001;
var total_seconds = Math.floor(86400 * fractional_day);
var seconds = total_seconds % 60;
total_seconds -= seconds;
var hours = Math.floor(total_seconds / (60 * 60));
var minutes = Math.floor(total_seconds / 60) % 60;
console.log(hours)
console.log(minutes)
输出:
19
15