您的位置:首页 > 编程语言 > Python开发

Python零碎知识(10):对日期时间的处理

2014-05-09 12:12 651 查看
Python提供了time/datetime/calendar等模块来处理日期时间。

一、time模块常用的函数

1、 time.time

1970年1月1日以来的秒数,这是一个浮点数

2、 time.sleep

可以通过调用time.sleep来挂起当前的进程。time.sleep接收一个浮点型参数,表示进程挂起的时间。

3、time.clock

在windows操作系统上,time.clock() 返回第一次调用该方法到现在的秒数,其精确度高于1微秒。可以使用该函数来记录程序执行的时间。下面是一个简单的例子:

1 >>> print time.clock()
2 1.26999365003e-006
3 >>> time.sleep(2)
4 >>> print time.clock()
5 21.4221419643
6 >>> time.sleep(3)
7 >>> print time.clock()
8 44.0470900595


4、 time.gmtime

该 函数原型为:time.gmtime([sec]),可选的参数sec表示从1970-1-1以来的秒数。其默认值为 time.time(),函数返回time.struct_time类型的对象。(struct_time是在time模块中定义的表示时间的对象),下 面是一个简单的例子:

1 >>> print time.gmtime()                        #获取当前时间的struct_time对象
2 (2013, 4, 8, 4, 28, 30, 0, 98, 0)
3 >>> print time.gmtime(time.time())
4 (2013, 4, 8, 4, 28, 50, 0, 98, 0)
5 >>> print time.gmtime(time.time()-24*60*60)    #获取昨天这个时间的struct_time对象
6 (2013, 4, 7, 4, 29, 10, 6, 97, 0)
7 >>>


5、 time.localtime

与time.gmtime非常类似,也返回一个struct_time对象,可以把它看作是gmtime()的本地化版本。

6、 time.mktime

time.mktime执行与gmtime(), localtime()相反的操作,它接收struct_time对象作为参数,返回用秒数来表示时间的浮点数。例如:

1 >>> print time.mktime(time.localtime())
2 1365395531.0


7、 time.strftime

time.strftime将日期转换为字符串表示,它的函数原型为:time.strftime(format[, t])。参数format是格式字符串(格式字符串的知识可以参考:time.strftime ),可选的参数t是一个struct_time对象。下面的例子将struct_time对象转换为字符串表示:

1 >>> print time.strftime('%Y-%m-%d %H:%M:%S',time.gmtime())
2 2013-04-08 04:35:34


time.strftime参数:
strftime(format[, tuple]) -> string
将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出
python中时间日期格式化符号:

%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 当前时区的名称
%% %号本身


8、 time.strptime

按指定格式解析一个表示时间的字符串,返回struct_time对象。该函数原型为:time.strptime(string, format),两个参数都是字符串,下面是一个简单的例子,演示将一个字符串解析为一个struct_time对象:

1 >>> print time.strptime('2013-04-09 12:30:25','%Y-%m-%d %H:%M:%S')
2 (2013, 4, 9, 12, 30, 25, 1, 99, -1)


更多内容参考Python手册

二、datetime模块

time模块它提供 的接口与C标准库time.h基本一致。相比于time模块,datetime模块的接口则更直观、更容易调用。

1、两个常量:

datetime.MINYEAR和datetime.MAXYEAR,分别表示datetime所能表示的最 小、最大年份。其中,MINYEAR = 1,MAXYEAR = 9999。

2、几个重要的类:

2.1、datetime.date:表示日期的类。常用的属性有year, month, day;

year的返回在两个常量之间;

month的范围是[1, 12]。(月份是从1开始的,不是从0开始的);

day依据month来决定。
date类提供了常用的类方法和类属性:

date.max、date.min:date对象所能表示的最大、最小日期;

date.today():返回一个表示当前本地日期的date对象

1 >>> from datetime import *
2 >>> import time
3 >>> print date.today()
4 2013-04-08
5 >>> print date.max
6 9999-12-31
7 >>> print date.min
8 0001-01-01


date提供的实例方法和属性

date.year、date.month、date.day:年、月、日;
date.replace(year, month, day):生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变)
date.timetuple():返回日期对应的time.struct_time对象;
date.weekday():返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推;
data.isoweekday():返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推;
date.isocalendar():返回格式如(year,month,day)的元组;
date.isoformat():返回格式如'YYYY-MM-DD’的字符串;
date.strftime(fmt):自定义格式化字符串。在下面详细讲解。

1 >>> now=date(2013,04,8)
2 >>> tomorrow=now.replace(day=9)
3 >>> print 'now:',now
4 now: 2013-04-08
5 >>> print 'tomorrow:',tomorrow
6 tomorrow: 2013-04-09
7 >>> print 'timetuple():',now.timetuple()
8 timetuple(): (2013, 4, 8, 0, 0, 0, 0, 98, -1)
9 >>> print 'weekday():',now.weekday()
10 weekday(): 0
11 >>> print 'isoweekday():',now.isoweekday()
12 isoweekday(): 1
13 >>> print 'isocalendar():',now.isocalendar()
14 isocalendar(): (2013, 15, 1)
15 >>> print 'isoformat():',now.isoformat()
16 isoformat(): 2013-04-08


date还对某些操作进行了重载,它允许我们对日期进行如下一些操作:

date2 = date1 + timedelta # 日期加上一个间隔,返回一个新的日期对象(timedelta将在下面介绍,表示时间间隔)
date2 = date1 - timedelta # 日期隔去间隔,返回一个新的日期对象
timedelta = date1 - date2 # 两个日期相减,返回一个时间间隔对象
date1 < date2 # 两个日期进行比较

1     now = date.today()
2     tomorrow = now.replace(day = 7 )
3     delta = tomorrow - now
4     print   'now:' , now,  ' tomorrow:' , tomorrow
5     print   'timedelta:' , delta
6     print  now + delta
7     print  tomorrow > now
8
9     # # ---- 结果 ----
10     # now: 2010-04-06  tomorrow: 2010-04-07
11     # timedelta: 1 day, 0:00:00
12     # 2010-04-07
13     # True
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: