Python中时间那些事儿

今天在弄个程序,从MSSQLServer读取部分数据,然后存储到sqlite,还有前一段时间转换数据库时都
遇到了时间的转换问题,这里就把常用的几个时间日期转换函数列出来,说一下用法,也算是复习用法

首先要知道,数据库中存储时间有多种形式,我用过的:

使用datetime.datetime.now(),如:2012-03-27 22:32:49.560165 优点: 直观易读 缺点: 存储占用空间大 比较大小、排序不便 使用time.mktime(time.localtime()),如1332859349.0,表示从0时区的1970年1月1日,0时整以来的秒数(epoch)。
因为那一刻是UNIX元年开始的时间。 优点: 存储占用空间小 排序方便 缺点 不直观,无法看一眼就理解

综合来看,我倾向于使用第二种方法,因为它的缺点可以避免,谁没事直接去数据库?会看数据库的人估计也会转换的。
得到时间和日期之后要说说怎么转换。

无论怎么转换,都需要现转换成9-item sequence,即一个九项的序列

从格式化时间转换成epoch

比如把2012-03-27 22:32:49.560165转换成秒数,使用 time.mktime()
但是这个函数接受的参数为9-item sequenc。必须先进行转换,使用time.strptime(),
进行反格式化,
time.strptime('2012-03-27 22:32:49.560165'[:19], '%Y-%m-%d %H:%M:%S')

然后,将结果带入time.mktime()即可得到1332858769.0

从epoch转换成格式化时间

首先转换成9-item sequence,使用 time.localtime()
time.localtime(1332858769.0)

得到9-item sequence以后,使用 time.strftime()进行格式化,
time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(1332858769.0))

最终得到2012-03-27 22:32:49

2012-03-27 21:52201pythontime