Derrick.Jiao 发表于 2021-3-5 12:03:49

关于OADate和1900年的差异

有小伙伴在使用日期的时候会经常遇到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的日期中减一。
页: [1]
查看完整版本: 关于OADate和1900年的差异