用go解析Excel中的日期
最近用golang解析excel时发现有些excel中的日期存储的是整型数值,读出来的数据类似于44449
这样,经研究发现excel中的日期存储的是从1900-01-00开始计算的天数,看下图:
知道这个规律后,解析日期就方便了。在解析前,有几个知识点须知道:
- 时间戳是以1970-01-01 00:00:00为起始点计算的秒数(也可以带上纳秒);
- Excel的日期起始点是1900-01-00;
- 在计算之前我们须计算出1900-01-00到1970-01-01之间的时间差,由于这个时间差是不会变的,因此计算完可以作为常数用,这个时间差是:
2209104343
golang的计算方法如下:
func ExcelNumberToDate(d int64) string {
return time.Unix(d*86400 - 2209104343, 0).Format("2006-01-02")
}
博主