不知道大家有没有这样的体会,明明我们在单元格里输入的是一个日期,但是excel却提示我们输入的是一个数字,这个东西就很奇怪了,43471怎么就成了日期了那?
实际上这和计算机的底层设置有关系,计算机是无法直接表示日期的,它只能把数字转化为日期,excel默认1代表1900年1月1日,2代表1900年1月2日,依次类推,到了2019年1月6日就变成了43471,这种表示方式虽然很直观,有些时候也会给我们带来一定的麻烦,比如说当我们用python做自动化脚本的时候,python是不认识excel的这种日期格式的,它只能把日期识别为数字,不利于脚本后续的处理,怎么才能把excel中的时间转化成python识别的时间那?
在这里给大家介绍一个知识,python也有自己的一套时间体系,它的时间体系和linux比较类似,默认以秒计数,1970年1月1日为时间的起始,以后每隔一秒加1,这套计数规则也叫作linux时间戳,现在我就给大家介绍一种方法,将excel时间转化为linux时间戳能够识别的格式。
首先我们先计算一下1990年1月1日到1970年1月1日中间有多少天,这个不需要自己算,直接用excel的时间对象相减就可以了,然后我们把25568这个常量记录下来。
在python里引入一个time模块,里面有一个()的方法,这个方法的作用是将时间戳转化为时间元组,大家也看到了,我的公式里有一个*24*3600,这个公式的作用就是讲excel的天转化为python里面的秒,通过结果我们发现日期差了一天,没关系,在以后计算时我们将25568写成25569就可以了。
不过时间元组并不是我们日常所见的日期形式,想要转化为2019-1-1这种形式怎么写,也很简单,使用strftime()方法就可以。这次的形式大家是不是就感觉很熟悉了。
总结:本文中用到的知识点主要是time模块
- 时间戳的开始时间为1970年1月1日(据说后面是8点0分0秒)
- ()可以将时间戳转化为时间元组
- () 可以将时间元组格式成字符串
- 还有一个常用的方法() 将时间元组转化为时间戳