找回密码
 立即注册

QQ登录

只需一步,快速开始

Derrick.Jiao 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-3-5 12:03  /   查看:3289  /  回复:0
有小伙伴在使用日期的时候会经常遇到OADate与1900年日期的问题,这边就做一个统一的解答与解决思路的提供。

首先,关于OADate。在我们取日期格式的值的时候发现拿到的值是个类似/OADate(42065)/这样的格式。这个是UTC时间 1970/1/1 日到该日期的毫秒数。为了解决日期的序列化以及时区问题,所以我们用了这样一个特殊的方式保存日期。


SpreadJS的处理方式是相当于把OADate当做一种“媒介”,在SpreadJS中我们会正常处理显示日期,存到数据库用的是OADate,从数据库读取出来,然后拿到SpreadJS展示也还是正常的日期。如果需要将OADate从数据库读取,做一些其他的数据处理,可以搜索相关语言对OADate的处理方法。


关于1900年这个时间问题,这是Excel和js日期计算的差异。在Excel中会把1900年当做闰年计算,而实际上1900年是平年,而闰年比平年多一天,所以Excel在1900年2月29前会多一天,也就是与js差一天。而在1900年3月1日后,js的时间是与Excel一致了。


如果需要与Excel保持一致,则需要判断单元格的值是否在1900/1/0 ~ 1900/2/29这个区间,如果在,则就在SpreadJS的日期中减一。

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部