#!/usr/bin/python
#coding:utf8
# 在应用程序的开发过程中,难免要跟日期、时间处理打交道。
# 如:记录一个复杂算法的执行时间;网络通信中数据包的延迟等等。
# Python中提供了time, datetime calendar等模块来处理时间日期,
# 今天对time模块中最常用的几个函数作一个介绍。
# 导入时间模块
import time
# time.time()函数返回的是从1970年1月1日以来的秒数,这是一个浮点型小数
#——————————————————————————————————————————————————————————————————
yesterday time.time() - 86400 #代表昨天数这个时候的时间
today = time.time() #代表今天的时间
tomorrow = time.time() + 86400 #带表明天的时间
#out1> 1382686284.44
#out2> 1382772684.44
#out3> 1382859084.44
#——————————————————————————————————————————————————————————————————
#time.sleep()一般用再进程方面,主要做用挂起当前进程,表示睡眠的时间,
# 是以秒做单位的
#——————————————————————————————————————————————————————————————————
time.sleep(2)
print '两秒后执行打印'
#间隔两秒执行 out> 两秒后执行打印
#——————————————————————————————————————————————————————————————————
# time.clock()返回第一次调用该方法到现在的秒数,其精确度高于1微秒。可
# 以使用该函数来记录程序执行的时间。下面是一个简单的例子:
#——————————————————————————————————————————————————————————————————
print time.clock() #初始clock时间
time.sleep(2)
print time.clock() #距离初始值得时间2秒
date_time = time.clock()
time.sleep(3)
print time.clock() #距离初始值得时间5秒
print time.clock() - date_time #表示中间的时间
# out1 > 6.39362683277e-07
# out2 > 2.01080107349
# out3 > 5.02091962732
# out4 > 3.00097215096
#——————————————————————————————————————————————————————————————————
# time.gmtime()该函数的模型是time.gmtime([sec]),sec表示从1970-1-1以来的秒数,
# 其中默认值为time.time(),函数返回值习time.struct_time类型的对象(
# struct_time是在time模块中定义的表示时间的对象),
#——————————————————————————————————————————————————————————————————
print time.gmtime() #获取当时的时间,并返回时间的对象(struct_time)
print time.gmtime(time.time() - 24*60*60) #表示昨天当时的时间
#out1 > time.struct_time(tm_year=2013, tm_mon=10, tm_mday=26, tm_hour=8, tm_min=0, tm_sec=9, tm_wday=5, tm_yday=299, tm_isdst=0)
#out2 > time.struct_time(tm_year=2013, tm_mon=10, tm_mday=25, tm_hour=8, tm_min=0, tm_sec=9, tm_wday=4, tm_yday=298, tm_isdst=0)
#——————————————————————————————————————————————————————————————————
# time.localtime()这个函数与time.gmtime()函数非常相似,也返回一个struct_time对象,
# 可以吧time.localtime看做time.gmtime的一个本地化操作
#——————————————————————————————————————————————————————————————————
print time.localtime()
#out > time.struct_time(tm_year=2013, tm_mon=10, tm_mday=26, tm_hour=8, tm_min=0, tm_sec=9, tm_wday=5, tm_yday=299, tm_isdst=0)
#——————————————————————————————————————————————————————————————————
# time.mktime()执行是与time.gmtime()和time.localtime()相反的操作,他接受的struct_time对象
# 返回用的浮点型表示的秒数
#——————————————————————————————————————————————————————————————————
print time.mktime(time.localtime())
print time.mktime(time.gmtime())
print time.time()
# out1 > 1382774990.0
# out2 > 1382746190.0
# out3 > 1382774990.14
#——————————————————————————————————————————————————————————————————
# time.strftime()将日期转换为字符串表示,它的函数原型为:time.strftime(format[, t])。
# 参数format是格式字符串(格式字符串的知识可以参考:time.strftime),
# 可选的参数t是一个struct_time对象。下面的例子将struct_time对象转换为字符串表示:
#——————————————————————————————————————————————————————————————————
print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime()) #输出当地是时间的日期
print time.strftime('%Y') #获取年份
print time.strftime('%H') #获取小时的时间
#out 1> 2013-10-26 16:15:16
#out 2> 2013
#out 3> 16
#——————————————————————————————————————————————————————————————————
# time.strptime()按指定格式解析一个表示时间的字符串,返回struct_time对象。
# 该函数原型为:time.strptime(string, format),两个参数都是字符串,
# 下面是一个简单的例子,演示将一个字符串解析为一个struct_time对象:
#——————————————————————————————————————————————————————————————————
print time.strptime('2009-06-23 15:30:53', '%Y-%m-%d %H:%M:%S') #返回struct_time对象
print time.strptime('2009', '%Y') #如果只是给年份的,器他的参数将会表示为出的值
#out 1> time.struct_time(tm_year=2009, tm_mon=6, tm_mday=23, tm_hour=15, tm_min=30, tm_sec=53, tm_wday=1, tm_yday=174, tm_isdst=-1)
#out 2> time.struct_time(tm_year=2009, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=-1)
#——————————————————————————————————————————————————————————————————
# time.ctime()也是是以个浮点型的秒数转化为时间字符串
#——————————————————————————————————————————————————————————————————
d_time = time.time()
print time.ctime(d_time) #输出的格式与 '2013-10-26 16:29:30' 这个不一样
# out > Sat Oct 26 17:06:11 2013
#——————————————————————————————————————————————————————————————————
# time.asctime()获取当前的时间以简化方式显示(可选参数struct_time对象)
#——————————————————————————————————————————————————————————————————
print time.asctime(time.localtime()) #参数可选
print time.asctime()
# out 1> Sat Oct 26 17:24:46 2013
# out 2> Sat Oct 26 17:24:46 2013
#——————————————————————————————————————————————————————————————————
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# %y 两位数的年份表示(00-99)
# %Y 四位数的年份表示(000-9999)
# %m 月份(01-12)
# %d 月内中的一天(0-31)
# %H 24小时制小时数(0-23)
# %I 12小时制小时数(01-12)
# %M 分钟数(00=59)
# %S 秒(00-59)
# %a 本地简化星期名称
# %A 本地完整星期名称
# %b 本地简化的月份名称
# %B 本地完整的月份名称
# %c 本地相应的日期表示和时间表示
# %j 年内的一天(001-366)
# %p 本地A.M.或P.M.的等价符
# %U 一年中的星期数(00-53)星期天为星期的开始
# %w 星期(0-6),星期天为星期的开始
# %W 一年中的星期数(00-53)星期一为星期的开始
# %x 本地相应的日期表示
# %X 本地相应的时间表示
# %Z 当前时区的名称
# %% %号本身
# 下面是一个练习,
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# 练习1(日期的转化成秒)
#——————————————————————————————————————————————————————————————————
d_time = '2013-10-26 16:29:30'
# 首先将时间格式的转分分struct_time对象( 运用time.strptime()方法 )
d_obj = time.strptime(d_time,'%Y-%m-%d %H:%M:%S') #注意格式要对应
#在的用time.mktime()模块将struct_time的对象转化为秒数
s_time = time.mktime(d_obj)
print s_time
# out 1> 1382776170.0
#——————————————————————————————————————————————————————————————————
time.gmtime() 与 time.localtime()的不同:
>>> time.strftime('%Y%m%d %H:%M:%S',time.gmtime(time.time()))
'20131202 03:00:24'
>>> time.strftime('%Y%m%d %H:%M:%S',time.localtime(time.time()))
'20131202 11:00:27'
两个获取字符串的时间相差(4个小时)