Excel日期数字转化成时间格式

1、5位数字转化成yyyy/mm/dd

要考虑闰年的小细节

// 输入数字转成日期(5位,excel表格日期),默认转换成YYYY-MM-DD
export function numberToDate(number, format) {
  if (number != undefined) {
    let date = new Date((number - 1) * 24 * 3600000 + 1);
    date.setYear(date.getFullYear() - 70);
    const Y = date.getFullYear() + '';
    const dateRel =
      (Y % 4 === 0 && Y % 100 !== 0) || Y % 400 == 0
        ? new Date((number - 2) * 24 * 3600000 + 1)
        : new Date((number - 1) * 24 * 3600000 + 1);
    dateRel.setYear(date.getFullYear() - 70);
    const M = (dateRel.getMonth() + 1 < 10 ? '0' + (dateRel.getMonth() + 1) : dateRel.getMonth() + 1) + '';
    const D = (dateRel.getDate() < 10 ? '0' + dateRel.getDate() : dateRel.getDate()) + '';
    if (format && format.length == 1) {
      return Y + format + M + format + D;
    } else {
      return Y + '-' + M + '-' + D;
    }
  } else {
    return undefined;
  }
}

2、带精度的5位数字转化成yyyy/mm/dd hh:mm:ss

function ExcelDateToJSDate(serial) {
   var utc_days  = Math.floor(serial - 25569);
   var utc_value = utc_days * 86400;                                        
   var date_info = new Date(utc_value * 1000);
 
   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;
 
   return new Date(date_info.getFullYear(), date_info.getMonth(), date_info.getDate(), hours, minutes, seconds);
}

ExcelDateToJSDate(44988.916666666664)
// 获取到的是 Fri Mar 03 2023 22:00:00 GMT+0800 (中国标准时间)

参考网站:
https://blog.csdn.net/vayne_1/article/details/129748002

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值