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

[经验分享] python datetime和calendar模块常用功能

[复制链接]

尚未签到

发表于 2018-8-5 13:45:55 | 显示全部楼层 |阅读模式
  一,datetime模块
  datetime模块定义了下面这几个类:
datetime.date:表示日期的类。常用的属性有year, month, day;
datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond;
datetime.datetime:表示日期和时间。
datetime.timedelta:表示时间间隔,即两个时间点之间的长度。
datetime.tzinfo:与时区有关的相关信息。
  1,datetime.datetime对象
  显示现在的时间及自定义格式
  In [10]: str_time = datetime.datetime.now()
  或
  In [10]: str_time = datetime.datetime.today()
  

  In [44]: print str_time
  2016-01-29 16:42:05.545688
  显示格式自定义:
  In [45]: print str_time.strftime("%Y-%m-%d %H:%M")
  2016-01-29 16:42
  把当前utc时间转换为时间戳:
  In [47]: time.mktime(str_time.timetuple())
  Out[47]: 1454056925.0
  将时间格式的字符串转换为datetime对象
  In [49]: a="2014 11-17 20:02"
In [50]: print datetime.datetime.strptime(a, "%Y %m-%d %H:%M")
2014-11-17 20:02:00

  显示当前的utc时间
  In [55]: print datetime.datetime.utcnow()
2014-11-17 12:26:59.612081
  把(unix)时间戳转化为datetime对象:
  In [64]: a=time.time()
In [65]: print a
1416227538.62
  In [66]: print datetime.datetime.fromtimestamp(a)
2014-11-17 20:32:18.619621
  In [67]: print datetime.datetime.utcfromtimestamp(a)
2014-11-17 12:32:18.619621
  显示对应时间是年中的第几周:
  In [10]: print datetime.datetime(2014,12,24).isocalendar()
  (2014, 52, 3)
  注:
  2014:元组的第一个值是日期对应的年份
  52:元组的第二个值是日期对应2014年中的第几周
  3:元组的第三个值是日期对应的周号
  2,datetime.date对象
  显示当前日期:
  In [86]: str_date = datetime.date.today()
In [87]: print str_date
2014-11-17
  显示date对象的年月日:
  In [93]: print str_date.year,str_date.month,str_date.day
2014 11 17
  把(unix)时间戳转化为date对象:
  In [96]: a=time.time()
In [97]: print a
1416228263.01
In [98]: print datetime.date.fromtimestamp(a)
2014-11-17
  3,datetime.time对象
  time类表示时间,由时、分、秒以及微秒组成。
  In [109]: tm = datetime.time(23 , 46 , 10 )
In [110]: print tm.hour,tm.minute,tm.second
23 46 10
In [113]: tm2 = tm.replace(minute=01)
In [114]: print tm2.hour,tm2.minute,tm2.second
23 1 10
  4,datetime.timedelta对象
  显示昨天的日期(也可以是时间的上几min或者几秒或者几小时)
  In [131]: a = datetime.datetime.now()
In [132]: print a
2014-11-17 20:57:17.170393
In [133]: print a + datetime.timedelta(days=-1)
2014-11-16 20:57:17.170393
  In [137]: print a + datetime.timedelta(days=1)
2014-11-18 20:57:17.170393
  In [134]: print a + datetime.timedelta(hours=-1)
2014-11-17 19:57:17.170393
In [135]: print a + datetime.timedelta(minutes=-1)
2014-11-17 20:56:17.170393
In [136]: print a + datetime.timedelta(seconds=-1)
2014-11-17 20:57:16.170393
  5,两个datetime.datetime对象时间差计算
  计算秒差值或者天的差值
  In [180]: a = datetime.datetime.now()
In [181]: b = a + datetime.timedelta(days=-2)
In [182]: c = a - b
In [183]: print c.total_seconds()
172800.0
In [184]: print c.days
2
  详细文档请查看:
  https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior
  二,calendar模块
  显示某天是周号
  
  In [17]: calendar.weekday(2015,1,8)
  Out[17]: 3
  显示某月的所有周:
  In [18]: cal = calendar.Calendar()
  In [19]: cal.monthdatescalendar(2015, 1)
  显示某年的所有周:
  In [24]: cal = calendar.Calendar()
  In [25]: cal.yeardatescalendar(2015)
  
  
  显示某月份有几天
  In [190]: print calendar.monthrange(2014, 11)
(5, 30)
  (5, 30)解释:5表示2014年11月份的第一天是周六;30表示2014年11月份总共有30天
  判断是否为润年
  In [194]: print calendar.isleap(2012)
True
In [195]: print calendar.isleap(2014)
False
  判断两个年份之间,润年的个数
  In [196]: print calendar.leapdays(2000, 2014)
4

  显示某月份的日历:
  In [206]: cal = calendar.month(2011, 11)
  In [207]: print cal
  November 2011
  Mo Tu We Th Fr Sa Su
  1 2 3 4 5 6
  7 8 9 10 11 12 13
  14 15 16 17 18 19 20
  21 22 23 24 25 26 27
  28 29 30
  详细文档请查看:
  https://docs.python.org/2/library/calendar.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-547065-1-1.html 上篇帖子: Python 中的 urllib2 模块 下篇帖子: Python 3 之 装饰器详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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