`

Python时间模块

阅读更多
time模块
时间模块中最常用的一个函数就是获取当前时间的函数time.time。

检查平台使用的纪元。

time.asctime(tupletime)接收一段时间的元祖,并返回一个可读的24个字符的字符串。
[11]: import time
In [12]: print time.asctime(time.gmtime(0))
Thu Jan  1 00:00:00 1970
[21]: time.asctime()
Out[21]: 'Mon Sep 16 11:34:00 2013'
In [32]: time.asctime(time.localtime())
Out[32]: 'Mon Sep 16 14:54:22 2013'

time.ctime(secs) 
In [35]: time.ctime(time.time())
Out[35]: 'Mon Sep 16 14:56:57 2013'

time.gmtime(secs)
In [37]: time.gmtime(time.time())
Out[37]: time.struct_time(tm_year=2013, tm_mon=9, tm_mday=16, tm_hour=6, tm_min=59, tm_sec=27, tm_wday=0, tm_yday=259, tm_isdst=0)

time.localtime(secs)
In [38]: time.localtime(time.time())
Out[38]: time.struct_time(tm_year=2013, tm_mon=9, tm_mday=16, tm_hour=15, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=259, tm_isdst=0)

GMT时间和本地时间差8个小时
[17]: time.gmtime()
Out[17]: time.struct_time(tm_year=2013, tm_mon=9, tm_mday=16, tm_hour=3, tm_min=31, tm_sec=30, tm_wday=0, tm_yday=259, tm_isdst=0)

In [18]: time.localtime()
Out[18]: time.struct_time(tm_year=2013, tm_mon=9, tm_mday=16, tm_hour=11, tm_min=31, tm_sec=44, tm_wday=0, tm_yday=259, tm_isdst=0)

[20]: time.localtime().tm_hour-time.gmtime().tm_hour
Out[20]: 8

时间模块中两个非常重要有用的函数是strftime()和strptime()。
strftime()可以根据返回的时间元祖构建一个字符串。

In [27]: time.strftime('%Y-%m-%d',time.localtime())
Out[27]: '2013-09-16'


strptime()与前者相反,它将解析给定的字符串并产生一个时间元祖。

In [28]: time.strptime('2013-09-16','%Y-%m-%d')
Out[28]: time.struct_time(tm_year=2013, tm_mon=9, tm_mday=16, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=259, tm_isdst=-1)


time.mktime(tupletime)接受作为本地时间的时间元组,并返回一个浮点值。
In [30]: time.mktime(time.localtime())
Out[30]: 1379314376.0


datetime模块
>>> dir(datetime)
['MAXYEAR', 'MINYEAR', '__doc__', '__file__', '__name__', '__package__', 'date', 'datetime', 'datetime_CAPI', 'time', 'timedelta', 'tzinfo']

>>> import datetime
>>> today = datetime.date.today()
>>> yesterday = today - datetime.timedelta(days=1)
>>> tomorrow = today +  datetime.timedelta(days=1)
>>> print yesterday, today, tomorrow
2013-09-15 2013-09-16 2013-09-17

>>> import datetime
>>> today = datetime.datetime.today()
>>> dir(today)
['__add__', '__class__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__radd__', '__reduce__', '__reduce_ex__', '__repr__', '__rsub__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', 'astimezone', 'combine', 'ctime', 'date', 'day', 'dst', 'fromordinal', 'fromtimestamp', 'hour', 'isocalendar', 'isoformat', 'isoweekday', 'max', 'microsecond', 'min', 'minute', 'month', 'now', 'replace', 'resolution', 'second', 'strftime', 'strptime', 'time', 'timetuple', 'timetz', 'today', 'toordinal', 'tzinfo', 'tzname', 'utcfromtimestamp', 'utcnow', 'utcoffset', 'utctimetuple', 'weekday', 'year']

In [1]: import datetime
In [2]: today = datetime.date.today()
In [3]: today
Out[3]: datetime.date(2013, 9, 16)

In [9]: datetime.datetime.now()
Out[9]: datetime.datetime(2013, 9, 16, 15, 13, 20, 876985)

In [10]: datetime.datetime.now().time()
Out[10]: datetime.time(15, 13, 21, 652054)

>>> import datetime
>>> NewYearsEve = datetime.date(2013, 12, 31)
>>> import datetime
>>> NewYearsDay = datetime.date(2012, 01, 01)
>>> NewYearsEve = datetime.date(2011, 12, 31)
>>> oneday = NewYearsDay - NewYearsEve
>>> oneday
datetime.timedelta(1)
>>> print oneday
1 day, 0:00:00


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


Questions:
Q1.Python获取时间戳的方法:
In [50]: time.time()
Out[50]: 1379315024.833934

时间戳转换为普通时间
In [63]: time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(1379314970.0))
Out[63]: '2013-09-16 15:02:50'

In [64]: time.strftime('%Y-%m-%d %H:%M:%S',time.gmtime(1379314970.0))
Out[64]: '2013-09-16 07:02:50'


Q2.寻找上一个星期五
你想知道上一个星期五的日期(包括今天,如果今天是星期五)并以特定格式将其打印出来。
#!/usr/bin/env python
#-*-coding:utf-8-*-

import datetime,calendar
last_friday = datetime.date.today()
one_day = datetime.timedelta(days=1)
while last_friday.weekday() != calendar.FRIDAY:
    last_friday -= one_day
print last_friday.strftime('%A, %d-%b-%Y')
#Friday, 13-Sep-2013


第二种方法(模运算)
#!/usr/bin/env python
#-*-coding:utf-8-*-
import datetime, calendar
today = datetime.date.today()

target_day = calendar.FRIDAY
this_day = today.weekday()

delta_to_target = (this_day-target_day) % 7
last_friday = today - datetime.timedelta(days=delta_to_target)
print last_friday.strftime('%d-%b-%Y')
#13-Sep-2013


参考资料:
http://docs.python.org/2/library/time.html
http://docs.python.org/2/library/datetime.html
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics