首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Excel日期转换为时刻日期会产生错误的年份输出

将Excel日期转换为时刻日期会产生错误的年份输出
EN

Stack Overflow用户
提问于 2019-07-22 20:14:16
回答 1查看 931关注 0票数 1

我正在导入Excel文件中的数据,它有date列。在我的应用程序中,date列的值是一个序列号,比如代表01/01/201843101.622083333335

当将这个序列号从Excel转换回它所代表的正常日期时,它给出了错误的年份。例如,它提供01-Jan-1970而不是01-Jan-2018

代码语言:javascript
运行
复制
var moment = require('moment');
var excelDate = 43101.622083333335;
var date = moment(new Date(excelDate));
var dateWithNewFormat = date.format('DD-MMM-YYYY');
console.log(dateWithNewFormat);

输出:01-Jan-1970而不是01-Jan-2018

有什么帮助吗?提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-23 06:51:00

我不认为这是moment库的问题。您似乎没有使用new Date(excelDate)的有效构造函数参数来调用Date (请参阅Date here的官方文档)。

Date类不理解“Excel time”的概念,但是它理解unix时间戳的概念。如果您参考this post,您可以看到如何将Excel时间转换为unix时间戳,这取决于您使用的Excel版本。

然后,我会将您的代码更改为:

代码语言:javascript
运行
复制
var moment = require('moment');
var excelDate = 43101.622083333335;
var unixTimestamp = (excelDate-25569)*86400 //as per the post above, convert Excel date to unix timestamp, assuming Mac/Windows Excel 2011 onwards
var date = moment(new Date(unixTimestamp)); //Pass in unix timestamp instead of Excel date
var dateWithNewFormat = date.format('DD-MMM-YYYY');
console.log(dateWithNewFormat);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57145840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档