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
6人参与 截止时间:2025/01/23 08:42:30
广东省
浏览 120
收藏
点赞
分享
+1
+1
全部评论