vue xlsx读取文件时,日期转换为了天数

标题XLSX读取xlxs文件时,日期2023/2/8转为了44965,把44965转为年月日格式

在Excel中,数字 44965 实际上代表的是Excel内部存储日期的一种数值格式,它基于一个被称为"Excel日期系统"的计数体系。从1900年1月1日(或对于包含1900年2月29日错误的版本是从1900年3月1日开始计算)算起的天数。每个日期都对应一个连续的序列号。

所以,当你看到 44965 这样的数值时,它表示的是从1900年1月1日之后经过的天数。转换回日期格式,我们可以计算出这个数值对应的日期是2023年2月8日。这是因为:

  • 1900年1月1日对应的序号是1
  • 加上44965天后即为2023年2月8日

这种存储方式有助于Excel高效地处理日期和时间,并进行各种日期相关的计算和格式化。如果你在JavaScript或者使用类似xlsx这样的库读取Excel文件时获取到了这样的数字,你需要通过相应的API或公式将其转换回可读的日期格式。

javascript 复制代码
export function excelDateToJSDate(serial: number) {
	const utc_days = Math.floor(serial - 25569);
	const utc_value = utc_days * 86400;
	const date_info = new Date(utc_value * 1000);

	const fractional_day = serial - Math.floor(serial) + 0.0000001;

	let total_seconds = Math.floor(86400 * fractional_day);

	const seconds = total_seconds % 60;

	total_seconds -= seconds;

	const hours = Math.floor(total_seconds / (60 * 60));
	const minutes = Math.floor(total_seconds / 60) % 60;

	return new Date(date_info.getFullYear(), date_info.getMonth(), date_info.getDate(), hours, minutes, seconds);
}
相关推荐
Ulyanov1 分钟前
Python射击游戏开发实战:从系统架构到高级编程技巧
开发语言·前端·python·系统架构·tkinter·gui开发
华仔啊6 分钟前
这 10 个 Vue3 性能优化技巧很实用,但很多项目都没用上
前端·vue.js
手握风云-8 分钟前
JavaEE 进阶第九期:Spring MVC - Web开发的“交通枢纽”(三)
前端·spring·java-ee
怕浪猫11 分钟前
React从入门到出门第九章 资源加载新特性Suspense 原生协调原理与实战
javascript·react.js·前端框架
天问一16 分钟前
Cesium 处理屏幕空间事件(鼠标点击、移动、滚轮)的示例
前端·javascript
@PHARAOH16 分钟前
WHAT - Vercel react-best-practices 系列(五)
前端·react.js·前端框架
bjzhang7517 分钟前
使用 HTML + JavaScript 实现多会议室甘特视图管理系统
前端·javascript·html
qiqiliuwu18 分钟前
VUE3+TS+ElementUI项目中监测页面滚动scroll事件以及滚动高度不生效问题的解决方案(window.addEventListener)
前端·javascript·elementui·typescript·vue
LawrenceLan19 分钟前
16.Flutter 零基础入门(十六):Widget 基础概念与第一个 Flutter 页面
开发语言·前端·flutter·dart
夏沫mds21 分钟前
基于 Flask 与Vue 3 及协同过滤算法的智能电影推荐系统
vue.js·python·flask·协同过滤