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

[经验分享] Python 日期和时间 —— datetime

[复制链接]

尚未签到

发表于 2015-11-30 10:16:46 | 显示全部楼层 |阅读模式
Python 日期和时间 —— datetime
  
  Python提供了多个内置模块用于操作日期时间,如calendar,time,datetime。calendar用于处理日历相关 ;time提供的接口与C标准库time.h基本一致;而其中应用最广的即datetime,相比于time模块,datetime模块的接口则更直观、更容易调用。本文将会对datetime进行学习。
  datetime 模块为日期和时间处理提供了多种方法。支持方法的同时,还可格式化输出。此外,该模块还支持时区的处理。
  

  datetime 库

  可见包含四大类,date表示日期(年月日);datetime(年月日时分秒...)继承 date;time表示时间(时分秒...);timedelta 表示时间差;tzinfo 表示时区信息(本章暂不做介绍)。
  

  datetime.date
  date 即日期,类的构成为 (年, 月,日),对应的 year、month、day 均为date类的属性(type 为 int)。
  year的范围是[MINYEAR, MAXYEAR],即[1, 9999];
month的范围是[1, 12]。(月份是从1开始的,不是从0开始的);
day的最大值根据给定的year, month参数来决定。例如闰年2月份有29天,非闰年28天; 若超范围,会报错  

  today() 返回当日;weekday() 返回当前星期数,若星期一,返回0、若星期2,返回1,以此类推;isoweekday()  若星期一,返回1、若星期2,返回2,以此类推;
  isoformat() 返回日期以ISO格式,即 'YYYY-MM-DD’的字符串;strftime(...) 方法可自定义日期表示法(time和datetime也均可使用),该方法会在博文之后详细说明。
      date.replace(year/month/day):生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变)
  一些其他的方法请参考文档,上述方法示例代码如下:

  

  datetime.time
  time 即时间,类的构成为 (时, 分, 秒, 微秒, 时区 信息),微妙、时区信息可缺省。
       time类提供的实例方法和属性:time.hour、time.minute、time.second、time.microsecond:时、分、秒、微秒; time.tzinfo:时区信息(暂不介绍);
  其中 time.min = time(0, 0, 0, 0), time.max = time(23, 59, 59, 999999);time.resolution:时间的最小单位,这里是1微秒;
  isoformat() 返回时间以ISO格式,即 "HH:MM:SS" 的字符串;strftime(...) 方法也可自定义时间表示法,该方法会在博文之后详细说明。
       time.replace([ hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ):生成一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性(原有对象仍保持不变);
  一些其他的方法请参考文档,上述方法示例代码 如下:

  

  datetime.datetime
  datetime是date与time的结合体,包括date与time的所有信息(常用的时间处理就用datetime)。
  它的构造函数如下:datetime.datetime (year, month, day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ),各参数的含义与date、time的构造函数中的一样,要注意参数值的范围。
  datetime类定义的类属性与方法:
  datetime.today():返回一个表示当前本地时间的datetime对象;
      datetime.now([tz]):返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;
      datetime.utcnow():返回一个当前utc时间的datetime对象;
      datetime.fromtimestamp(timestamp[, tz]):根据时间戮创建一个datetime对象,参数tz指定时区信息;
      datetime.date():获取date对象; datetime.time():获取time对象;
      datetime. replace ([ year[ , month[ , day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ] ] ]) : 用法同date和time方法;
      datetime.combine(date, time):根据date和time,创建一个datetime对象;
      datetime.strptime(date_string, format):将格式字符串转换为datetime对象;同样该方法会在博文之后详细说明。

  time 模块本文不介绍,但需要了解一个比较重要的概念,即时间戳
  time() -> floating point number
  Return the current time in seconds since the Epoch.
  Fractions of a second may be present if the system clock provides them.
  Unix time, POSIX time 或 Unix timestamp 是从Epoch(1970年1月1日00:00:00 UTC)开始所经过的秒数,不考虑闰秒。相关的详细了解请 Google。



import time
timestamp = time.time()
print timestamp
  

  上述 datetime 的方法示例如下:

  

  datetime.timedelta
  即表示一个时间的差值:  

  具体参考文档,这边就不多加阐述了:
  timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
    All arguments are optional and default to 0. Arguments may be ints, longs, or floats, and may be positive or negative.
  
    Only days, seconds and microseconds are stored internally. Arguments are converted to those units:


  •         A millisecond is converted to 1000 microseconds.
  •         A minute is converted to 60 seconds.
  •         An hour is converted to 3600 seconds.
  •         A week is converted to 7 days.
      and days, seconds and microseconds are then normalized so that the representation is unique, with


  •         0 <= microseconds < 1000000
  •         0 <= seconds < 3600*24 (the number of seconds in one day)
  •         -999999999 <= days <= 999999999

  主要是对date、time、datetime 一些 timedelta 操作的支持,如下:
  date 对某些操作进行了重载,它允许我们对日期进行如下一些操作:
        date2 = date1 + timedelta  # 日期加上一个间隔,返回一个新的日期对象(timedelta将在下面介绍,表示时间间隔)
        date2 = date1 - timedelta   # 日期隔去间隔,返回一个新的日期对象
        timedelta = date1 - date2   # 两个日期相减,返回一个时间间隔对象
        date1 < date2         # 两个日期可进行比较
      注: 对日期进行操作时,要防止日期超出它所能表示的范围。
  time 和 datetime 的操作与 date 雷同,这里就不提供例子了。
  

  时间的格式化
  datetime、date、time 都提供了strftime()方法,该方法接收一个格式字符串,输出日期时间的字符串表示。

  参考示例如下:

  
  
  

运维网声明 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-145262-1-1.html 上篇帖子: Python学习之:pycharm配置 下篇帖子: python log
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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