js宏读取单元格日期时间格式的数据变浮点数45664.842256944401的解决办法
本人在计算下单时间到最晚发货时间遇到问题,js读取数据的时候回自动变浮点型数据,
比如单元格显示:2025/1/7 20:12:51,js宏取数后变45664.842256944401,需求是在日期:2025/1/7 20:12:51加1.5天
js属于前端语言,肯定有人遇到解析Excel文件时,日期时间变浮点数的问题,直接必应搜索:前端解析excel日期时间变浮点数,果然找到办法了
接下来只要把要增加的天数转成毫秒就解决问题了
完整代码:
function AddDaysTest() {
let t = Range('M3').Value2
console.log('单元格取数变浮点数:', t)
let nt = formatDate(t, '-')
console.log('\n处理后效果:', nt)
let at = dateFormatAddDays(nt, 1.5)
console.log('\n增加1.5天:', at)
}
//日期浮点数转yyyy-mm-dd hh:mm:ss
function formatDate(numb, format) {
const time = new Date((numb - 1) * 24 * 3600000 + 1);
time.setYear(time.getFullYear() - 70);
time.setHours(time.getHours() - 8);
const year = time.getFullYear() + '';
const month = time.getMonth() + 1 + '';
const date = time.getDate() - 1 + '';
const hours = time.getHours().toLocaleString();
const minutes = time.getMinutes();
const seconds = time.getSeconds().toLocaleString();
if (format && format.length === 1) {
return year + format + (month < 10 ? '0' + month : month) + format + (date < 10 ? '0' + date : date) + ' ' + (hours < 10 ? '0' + hours : hours) + ':' + (minutes < 10 ? '0' + minutes : minutes) + ':' + (seconds < 10 ? '0' + seconds : seconds);
}
return year + (month < 10 ? '0' + month : month) + (date < 10 ? '0' + date : date) + (hours < 10 ? '0' + hours : hours) + (minutes < 10 ? '0' + minutes : minutes) + (seconds < 10 ? '0' + seconds : seconds);
}
//日期增加,格式:2025-01-07 20:12:51,例 +1.5 天
function dateFormatAddDays(daytime, addtime) {
const date = new Date(daytime.replace(' ', 'T'));
const addDays = addtime * 24 * 60 * 60 * 1000;
const newDate = new Date(date.getTime() + addDays);
// 格式化输出新的日期时间
return newDate.toISOString().replace('T', ' ').slice(0, -5);
}
投票学会JavaScript就能自动掌握JS宏?(2选1)
- 必须的 3
- 有点困难 3