往往在页面中批量导入一些员工信息类,会有传入excel表格,进行解析拿到对应数据,渲染,但其中得到的数据并不是我们所期待的可以通过以下的公式来进行数据的转化
Excel中时间戳转换公式及原理
这个公式的原理:Excel的日期实际上是序列值,它以1900-1-1为1,且从北京时间8点开始,每过一天序列值加1,。而Unix时间戳是从1970-1-1 00:00:00 UTC开始到现在经过的秒数。用X表示时间戳,可得到换算公式:
X+8*3600 | 当前时区的时间(秒),北京时间+8小时 |
(X+8*3600)/86400 | 转换单位为天,一天为86400秒 |
(X+8*3600)/86400+70*365 | 加上1900到1970这七十年 |
(X+8*3600)/86400+70*365+19 | 加上闰年多出来的天数19天 |
1、时间戳转换成正常日期的公式:
B2=(A2+8*3600)/86400+70*365+19
2、正常日期转换为时间戳格式的公式:
C2=(B2-70*365-19)*86400-8*3600
其中,B2为正常日期时间的表格,C2为所需时间戳格式的表格
具体项目中封装的方法如下:
changeDate(num) {
// 先将excel中读取到的时间转化为时间戳
const t = new Date((num - 1) * 24 * 60 * 60 * 1000 - 8 * 60 * 60 * 1000)
// 将时间减少70年(不确定闰年与否,采用setYear方法)
t.setYear(t.getFullYear() - 70)
return t
}