web格式化计算机时间,web端excel导入日期格式化问题

这篇博客探讨了在Excel中导入日期时遇到的问题,即日期显示为数字如58241.25。文章解释了如何将Excel日期转换为JavaScript日期,提供了正确的转换函数,并指出了网上一个常见错误的转化方法。该错误方法可能导致日期转换不准确,如2038年12月31日的Excel日期50770会被错误地转换为2039年1月1日。同时,文章还给出了从JavaScript日期转换回Excel日期的函数。
摘要由CSDN通过智能技术生成

我们在excel导入的时候日期会是一串58241.25这种。

查证文档后发现资料----各个语言日期转化成时间戳http://coolaf.com/tool/unix

Microsoft Excel的日期格式转换需要这样

=(A1 / 86400) + 25569 Format the result cell for date/time, the result will be in GMT time (A1 is the cell with the epoch number). For other time zones: =((A1 +/- time zone adjustment) / 86400) + 25569.

方法如下:

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);

}

就这么解决时间转化的问题。

网上有一种错误的方法我贴出来:

function formatDate(numb, format) {

if (!numb) {

return "";

}

const time = new Date((numb - 1) * 24 * 3600000 + 1)

time.setYear(time.getFullYear() - 70)

const year = time.getFullYear() + ''

const month = time.getMonth() + 1 + ''

const date = time.getDate() + ''

/* if (format && format.length === 1) {

return year + format + month + format + date

} */

return year + format + (month < 10 ? '0' + month : month) + format + (date < 10 ? '0' + date : date)

}

这种转化会出现错误,比如2038/12/31日 的excel值 50770 就变成2039-01-01了,应该是时区没有考虑进去导致的问题。

如果需要js日期转为excel日期可用下面方法:

function JSDateToExcelDate(inDate) {

var returnDateTime = 25569.0 + ((inDate.getTime() - (inDate.getTimezoneOffset() * 60 * 1000)) / (1000 * 60 * 60 * 24));

return returnDateTime.toString().substr(0,5);

}

现在就写这么多了,忙去了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值