心澄

命由己造,相由心生,世间万物皆是化相,心不动,万物皆不动,心不变,万物皆不变
Program Languagerusting... going...
Email insunsgmail.com
Country China
LocationHangZhou, ZheJiang

用go解析Excel中的日期


最近用golang解析excel时发现有些excel中的日期存储的是整型数值,读出来的数据类似于44449这样,经研究发现excel中的日期存储的是从1900-01-00开始计算的天数,看下图:
excel日期

Excel数字转日期

知道这个规律后,解析日期就方便了。在解析前,有几个知识点须知道:

  1. 时间戳是以1970-01-01 00:00:00为起始点计算的秒数(也可以带上纳秒);
  2. Excel的日期起始点是1900-01-00;
  3. 在计算之前我们须计算出1900-01-00到1970-01-01之间的时间差,由于这个时间差是不会变的,因此计算完可以作为常数用,这个时间差是:2209104343

golang的计算方法如下:

func ExcelNumberToDate(d int64) string {
    return time.Unix(d*86400 - 2209104343, 0).Format("2006-01-02")
}
  • 分享:
评论

    • 博主

    说点什么