Python中time模块和datetime模块的用法示例
time模块方法:
time.time():获取当前时间的时间戳
time.localtime():接受一个时间戳,并把它转化为一个当前时间的元组。不给参数的话就会默认将time.time()作为参数传入
属性
含义
tm_year
年
tm_mon
月
tm_mday
日
tm_hour
时
tm_min
分
tm_sec
秒
tm_wday
一周中的第几天
tm_yday
一年中的第几天
tm_isdst
夏令时
- time.mktime():和time.localtime()相反,它把一个时间元组转换成时间戳(这个必须要给一个参数)
- time.asctime():把一个时间元组表示为:“SunJul2803:35:262013”这种格式,不给参数的话就会默认将time.localtime()作为参数传入
- time.ctime():把一个时间戳转换为time.asctime()的表达格式,不给参数的话就会默认将time.time()作为参数传入
- time.gmtime():将一个时间戳转换为UTC+0时区(中国应该是+8时区,相差8个小时)的时间元组,不给参数的话就会默认将time.time()作为参数传入
- time.strftime(format,time.localtime()):将一个时间元组转换为格式化的时间字符,不给时间元组参数的话就会默认将time.localtime()作为参数传入
例如web日志里面的时间格式就是time.strftime('%d/%b/%Y:%X')
返回结果:
SunJul2804:37:382013
format:
%y
去掉世纪的年份
00-99
完整的年份
一年中的第几天
001-366
%m
月份
1月12日
本地简化月份的名称
简写英文月份
本地完整月份的名称
完整英文月份
%d
一个月中的第几天
1月31日
%H
一天中的第几个小时(24小时制)
00-23
第几个小时(12小时制)
“01-12”
%M
分钟数
00-59
%S
秒
00-59
%U
一年中的星期数(从星期天开始算)
00-53
一年中的星期数(从星期一开始算)
一个星期的第几天
0-6
%Z
中国:应该是GMT+8(中国标准时间)
求大神扫盲
%x
本地相应日期
日/月/年
本地相印时间
时:分:秒
详细日期时间
日/月/年时:分:秒
‘%'字符
‘%'字符
本地am或者pm的相应符
AM or PM
time.strptime(stringtime,format):将时间字符串根据指定的格式化符转换成数组形式的时间,
例如:
time.strptime('28/Jul/2013:04:33:29','%d/%b/%Y:%X')
返回结果:
time.struct_time(tm_year=2013,tm_mon=7,tm_mday=28,tm_hour=4,tm_min=33,tm_sec=29,tm_wday=6,tm_yday=209,tm_isdst=-1)
time.clock():返回处理器时钟时间,一般用于性能测试和基准测试等,因为他们反映了程序使用的实际时间,平常用不到这个。
time.sleep():推迟指定的时间运行,单位为秒
importtime printtime.time()#打印时间戳 printtime.localtime()#打印本地时间元组 printtime.gmtime()#答应UTC+0时区的时间元组 printtime.ctime()#打印asctime格式化时间 printtime.mktime(time.localtime())#将时间元组转换为时间戳 printtime.asctime()#打印格式化时间 printtime.strftime('%d/%b/%Y:%X')#打印指定格式的时间格式 #把时间字符串和它的格式翻译成时间元组 printtime.strptime('28/Jul/2013:04:33:29','%d/%b/%Y:%X') print'%0.5f'%time.clock()#打印处理器时间 foriinrange(100000): pass print'%0.5f'%time.clock()#打印处理器时间
来看一下结果:
[root@localhost~]#pythontime1.py
1364028568.55 time.struct_time(tm_year=2013,tm_mon=3,tm_mday=23,tm_hour=4,tm_min=49,tm_sec=28,tm_wday=5,tm_yday=82,tm_isdst=1) time.struct_time(tm_year=2013,tm_mon=3,tm_mday=23,tm_hour=8,tm_min=49,tm_sec=28,tm_wday=5,tm_yday=82,tm_isdst=0) SatMar2304:49:282013 1364028568.0 SatMar2304:49:282013 23/Mar/2013:04:49:28 time.struct_time(tm_year=2013,tm_mon=7,tm_mday=28,tm_hour=4,tm_min=33,tm_sec=29,tm_wday=6,tm_yday=209,tm_isdst=-1) 0.02000 0.03000
datetime模块
datetime.time():生成一个时间对象。这个时间可以由我们来设置,默认都是0(这个类只针对时间)
#coding:utf-8 importdatetime printdatetime.time() t=datetime.time(1,3,5,25) printt printt.hour#时 printt.minute#分 printt.second#秒 printt.microsecond#毫秒 printdatetime.time.max#一天的结束时间 printdatetime.time.min#一天的开始时间
执行一下:
00:00:00 01:03:05.000025 23:59:59.999999 00:00:00
datetime.date():生成一个日期对象。这个日期要由我们来设置,(这个类只针对日期)
#coding:utf-8 importdatetime #设置日期 t=datetime.date(2013,2,3) #打印设置日期的和元组 printt.timetuple()#日期元组 printt printt.year#年 printt.month#月 printt.day#日 #获取今天的日期 today=datetime.date.today() printtoday printdatetime.datetime.now()#这个打印到毫秒级别 #获取今天日期的元组 t1=today.timetuple() printt1 #打印成ctime格式(time.ctime()格式) #'%a%b%d%H:%M:%S%Y' printt.ctime() printtoday.ctime()
运行结果
time.struct_time(tm_year=2013,tm_mon=2,tm_mday=3,tm_hour=0,tm_min=0,tm_sec=0,tm_wday=6,tm_yday=34,tm_isdst=-1) 2013-02-03 2013 2 3 2013-07-28 2013-07-2820:13:25.942000 time.struct_time(tm_year=2013,tm_mon=7,tm_mday=28,tm_hour=0,tm_min=0,tm_sec=0,tm_wday=6,tm_yday=209,tm_isdst=-1) SunFeb300:00:002013 SunJul2800:00:002013
datetime.timedelta():这个类用来做时间的算数运算
datetime.datetime.combine(date,time):这个用来结合日期和时间的
#coding:utf-8 importdatetime #打印:从毫秒到周的表示格式=转换成秒(total_seconds()) foriin[datetime.timedelta(milliseconds=1),#1毫秒 datetime.timedelta(seconds=1),#1秒 datetime.timedelta(minutes=1),#1分钟 datetime.timedelta(hours=1),#1小时 datetime.timedelta(days=1),#1天 datetime.timedelta(weeks=1)]:#11周 #printi+':'+i.total_seconds() print'%s=%sseconds'%(i,i.total_seconds()) print print'~'*20+'我是分割线'+'~'*20 print'计算时间的加减。。。。。。。。。' a=datetime.datetime.now() print'现在时间是:' printa print'加5小时之后变成:' b=a+datetime.timedelta(hours=5) printb print'加一周之后变成:' c=a+datetime.timedelta(weeks=1) printc print'减去一周后变成:' d=a-datetime.timedelta(weeks=1) printd print'计算2个时间相差多久' print'%s减去%s'%(b,a) print'等于:%s'%(b-a) print'%s减去%s'%(a,d) print'等于:%s'%(a-d) print print'~'*20+'我是分割线'+'~'*20 print'比较2个时间:' print'比较当天和一周前的' printa>d print'如果比较d>a的话就返回False' print print'~'*20+'我是分割线'+'~'*20 print'上面的列子都是把日期和时间分开的,现在我们来把他们自由结合' print'假设我们想要的时间是:2014-01-0513:14:25' t=datetime.time(13,14,25) d=datetime.date(2014,01,05) printdatetime.datetime.combine(d,t)
打印为:
0:00:00.001000=0.001seconds 0:00:01=1.0seconds 0:01:00=60.0seconds 1:00:00=3600.0seconds 1day,0:00:00=86400.0seconds 7days,0:00:00=604800.0seconds
计算时间的加减。。。。。。。。。
现在时间是: 2013-07-2821:34:33.531000 加5小时之后变成: 2013-07-2902:34:33.531000 加一周之后变成: 2013-08-0421:34:33.531000 减去一周后变成: 2013-07-2121:34:33.531000 计算2个时间相差多久 2013-07-2902:34:33.531000减去2013-07-2821:34:33.531000 等于:5:00:00 2013-07-2821:34:33.531000减去2013-07-2121:34:33.531000 等于:7days,0:00:00 比较2个时间: 比较当天和一周前的 True 如果比较d>a的话就返回False 上面的列子都是把日期和时间分开的,现在我们来把他们自由结合 假设我们想要的时间是:2014-01-0513:14:25 2014-01-0513:14:25