Python时间操作
( time,
datatime
以及 calendar )
在项目中长期要与时间打交道;
1.在python中,通常有几种方式来表示时间
:
a:
时间戳 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数
返回时间戳方式的函数主要有time(),clock()等
b: 格式化的时间字符串 UTC
中国为utc+8
c: 元组(struct_time)
返回struct_time的函数主要有gmtime(),localtime(),strptime()。
2.
time模块中常用的几个函数:
1) time.localtime([secs]): 将一个时间戳转换为当前时区的struct_time。secs参数如果没有提供,那么就以当前时间为准
time.struct_time(tm_year=2016, tm_mon=2, tm_mday=24,
tm_hour=14, tm_min=47, tm_sec=3, tm_wday=2, tm_yday=55,
tm_isdst=0)
返回一个 struct_time的结构体
tm_year
年
tm_mon 月
tm_mday 日
tm_hour 时
tm_min
分
tm_sec
秒
tm_wday
这周的第几天, 星期2是第二天
tm_yday
这年的第几天,
tm_isdst 是否是夏令时
2) time.gmtime([secs]):
与 1)类似,不过时间为UTC,
中国地区为UTC+8,所以少8个小时
3)
time.time()
返回当前时间的时间戳
1456296889.59431
4)time.mktime(t):将一个struct_time转化为时间戳。
5)time.sleep(secs)
线程休眠,单位为秒
6.) time.clock()
:这个需要注意,在不同的系统上含义不同。在UNIX系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间戳)。而在WINDOWS中,第一次调用,返回的是进程运行的实际时间。而第二次之后的调用是自第一次调用以后到现在的运行时间。(实际上是以WIN32上QueryPerformanceCounter()为基础,它比毫秒表示更为精确)
7) time.asctime([t])
将一个表示时间的元组或者struct_time表示为这种形式'Thu May 5 14:55:43 2011'
>>>
time.asctime()
如果没有参数输入,那么为localtime()
'Thu May 5 14:55:43 2011'
8 time.ctime([secs])
把一个时间戳(按秒计算的浮点数)转化为time。Asctime()的形式.如果没有参数,那么就是当前时间
9
time.strftime(format[,t])
把一个代表时间的元组或者struct_time(如由time.localtime()和time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()。如果元组中任何一个元素越界,ValueError的错误将会被抛出。
举个例子:
>>> time.strftime("%Y-%m-%d %X",
time.localtime())
'2011-05-05 16:37:06'
%a
本地local
简化星期名称
%A
本地完整星期名称
%b
本地简化月份名称
%B
本地完整月份名称
%c
本地相应的日期和时间表示
%x
本地相应日期
%X
本地相应日期
%y
去掉世纪的年份 (00-99)
%Y
完整的年份
%d
一个月中第几天
%H
一天中的第几个小时 (H表示24小时制)
%I
第几个小时(I表示12小时制)
%m
月份
%M
分钟数
%p
12小时制度时,显示am,pm
%S
秒数
%j
一年中的第几天(001-366)
%U
一年中的第多少星期 (0-53)
%W
(1-54)
%w
一个星期中的第几天 (0-6,
0表示星期天)
a.
时间戳转字符串
time_sec = time.time()
当前时间的时间戳
time.strftime( “format”, time.localtime(time_sec)
) //当前时间戳转为
元组,元组再转化为时间格式字符串
b.
日期格式转时间戳
d = datetime.date.today()
time_sec_float = time.mktime(d.timetuple())
日期转成元组,元组转成时间戳
c
字符串日期格式化转为秒数,返回浮点类型
expire_time = "2013-05-21 09:50:35"
d = datatime.datetime.strptime(expire_time, "%Y-%m-%d
%H:%M:%S") 得到日期
time_sec_float = time.mktime( d.timetuple()
)
日期转为元组,元组转为时间戳
d.
获取上个月的最后一天
last_month_last_day = datetime.date( datetime.date.today().year,
datetime.date.today().month(),1) – datetime.timedelta(1)
加载中,请稍候......