设为首页 收藏本站
查看: 646|回复: 0

[经验分享] Python时间模块

[复制链接]

尚未签到

发表于 2017-4-22 10:55:12 | 显示全部楼层 |阅读模式
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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-367683-1-1.html 上篇帖子: python学习收集 下篇帖子: 初试python des
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表