python模块--时间模块


一、python中时间介绍:

   python中时间的表示形式有两种:  

        1、时间戳表示法,即以整型或浮点型表示的是一个以秒为单位的时间间隔。这个时间的基础值是从1970年的1月1号零点开始算起。

        2、元组格式表示法,即一种Python数据结构表示。这个元组有9个整型内容。分别表示不同的时间含义。



二、datetime模块


2.1 datetime模块的所有函数


In [2]: dir(datetime)
Out[2]: 
['MAXYEAR',
 'MINYEAR',
 '__doc__',
 '__file__',
 '__name__',
 '__package__',
 'date',
 'datetime',
 'datetime_CAPI',
 'time',
 'timedelta',
 'tzinfo']

In [3]:


2.2 datetime模块函数详解


datetime.datetime.now()    获取当前系统时间

In [9]: print datetime.datetime.now()
2016-11-29 12:27:55.391272

#datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
#一般用于数据库跟时间有关字段的赋值
#In [29]: print datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
2016-11-29 13:26:22


datetime.date.today()     获取今天日期

In [13]: print datetime.date.today()
2016-11-29


datetime.timedelta(days=x)  给定两个时间差值

In [16]: help(datetime.timedelta)
class timedelta(__builtin__.object)
 |  Difference between two datetime values.
 |  
 |  Methods defined here:
 |  
 |  __abs__(...)
 |      x.__abs__() <==> abs(x)
 |  
 |  __add__(...)
 |      x.__add__(y) <==> x+y
 |  
 |  __div__(...)
 |      x.__div__(y) <==> x/y
 |  
 |  __eq__(...)
 |      x.__eq__(y) <==> x==y
 |  
 |  __floordiv__(...)
 |      x.__floordiv__(y) <==> x//y
 |  
 |  __ge__(...)
 |      x.__ge__(y) <==> x>=y
 |  
 |  __getattribute__(...)
 |      x.__getattribute__('name') <==> x.name

##小李子
In [14]: print datetime.timedelta(days=1)
1 day, 0:00:00


datetime.datetime.strptime()    将字符串格式转换成时间

##注意这个函数字符串中连接符只能是'-',其他则会报错
In [26]: print datetime.datetime.strptime("2016-12-20",'%Y-%m-%d')
2016-12-20 00:00:00

In [25]: print datetime.datetime.strptime("2016 12 20",'%Y-%m-%d')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-25-aac02a333bd5> in <module>()
----> 1 print datetime.datetime.strptime("2016 12 20",'%Y-%m-%d')

/usr/local/python2.7/lib/python2.7/_strptime.pyc in _strptime(data_string, format)
    323     if not found:
    324         raise ValueError("time data %r does not match format %r" %
--> 325                          (data_string, format))
    326     if len(data_string) != found.end():
    327         raise ValueError("unconverted data remains: %s" %

ValueError: time data '2016 12 20' does not match format '%Y-%m-%d'

In [27]: import time

In [28]: time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
Out[28]: '2016-11-29 13:18:21'



三、time模块


3.1 time模块的所有函数

In [3]: dir(time)
Out[3]: 
['__doc__',
 '__file__',
 '__name__',
 '__package__',
 'accept2dyear',
 'altzone',
 'asctime',
 'clock',
 'ctime',
 'daylight',
 'gmtime',
 'localtime',
 'mktime',
 'sleep',
 'strftime',
 'strptime',
 'struct_time',
 'time',
 'timezone',
 'tzname',
 'tzset']


3.2 time模块具体函数讲解

    

    time.time()    -- 返回当前时间戳,浮点数形式。不接受参数  

In [30]: time.time()
Out[30]: 1480398573.196829

    

time.sleep() -- 延迟一个时间段,接受整型、浮点型。

In [10]: time.sleep(3)#执行完成后睡眠3秒


time.localtime()        -- 将时间戳转换为本地时间元组格式。接受一个浮点型时间戳参数,其默认值为当前时间戳。

In [11]: time.localtime()
Out[11]: time.struct_time(tm_year=2016, tm_mon=12, tm_mday=10, tm_hour=11, tm_min=49, tm_sec=26, tm_wday=5, tm_yday=345, tm_isdst=0)
In [13]: time.localtime(1481341446.412076)
Out[13]: time.struct_time(tm_year=2016, tm_mon=12, tm_mday=10, tm_hour=11, tm_min=44, tm_sec=6, tm_wday=5, tm_yday=345, tm_isdst=0)


time.asctime()             -- 将时间元组格式转换为字符串形式。接受一个时间元组,其默认值为localtime()返回值

In [14]: time.asctime()
Out[14]: 'Sat Dec 10 11:51:26 2016'

In [23]: time.asctime((2016,12,10,11,52,47,5,345,0))
Out[23]: 'Sat Dec 10 11:52:47 2016'


time.strftime()             -- 将时间元组以指定的格式转换为字符串形式。接受字符串格式化串、时间元组。时间元组为可选,默认为localtime()

In [25]: time.strftime("%Y   %H:%M:%S")
Out[25]: '2016 11:59:55'



 strptime() -- 将指定格式的时间字符串解析为时间元组,strftime()的逆向过程。接受字符串,时间格式2个参数,都是必选。

In [28]: time.strptime('Sat Dec 10 12:00:59 2016')
Out[28]: time.struct_time(tm_year=2016, tm_mon=12, tm_mday=10, tm_hour=12, tm_min=0, tm_sec=59, tm_wday=5, tm_yday=345, tm_isdst=-1)