如何将Excel小时序列号转换为H:M格式



在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

最新更新