ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python3 time和datetime

2022-08-16 21:33:09  阅读:279  来源: 互联网

标签:struct datetime tm sec time 时间 python3


  Python中表示时间的两种方式:

  1.时间戳:相对于1970.1.1 00:00:00以秒计算的偏移量,唯一的  

  2.时间元组struct_time:共有9个元素

  • tm_year:年1-12
  • tm_mon:月1-12
  • tm_mday:日1-31
  • tm_hour:时0-23
  • tm_min:分0-59
  • tm_sec:秒0-59
  • tm_wday:星期0-6(0表示周日)
  • tm_day:一年中的第几天1-366
  • tm_isdst:是否是夏令,默认为-1

 

1.time

  在python文档中,time是归类在常规操作系统服务中,它提供的功能更加接近于操作系统层面。其所能表述的日期范围被限定在1970-2038之间,如果需要表述范围之外的日期,可能需要考虑使用datetime模块更好。

  以下是time的一些简单的常用方法。

  1.time.sleep(sec):推迟指定时间sec后继续运行

  

  2.time.localtime([sec]):将一个时间戳转化成一个当时时区的struct_time,如果sec参数未输入,则以当前时间为转化标准

  

  3.time.strftime(format[,t]):将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出,把一个代表时间的元组或者struct_time转化为格式化的时间字符串。如果t为指定,将传入time.localtime()。如果元组中任何一个元素越界,ValueError的错误将会被抛出

  

  4.time.time():返回当前时间的时间戳(以秒表示的浮点数)

  

  5.time.mktime(t):将一个struct_time转换为时间戳

  

  6.time.gmtime([sec]):将一个时间戳转化为UTC时区(0时区)的struct_time

  

  7.time.clock():不同系统含义不同。UNIX——返回进程时间,WINS第一次调用返回进程运行的实际时间,第二次调用是自第一次调用以后到现在的运行时间

  由于该方法依赖操作系统,在 Python 3.3 以后不被推荐,而在 3.8 版本中被移除,需使用下列两个函数替代。

  

  8.time.asctime([t])把一个时间的元组或者struct_time表示为“Sun Jun 20 23:21:05 1993”,如果无参数,则会把time.localtime()作为参数传入

  

  9.time.ctime([sec]):把一个时间戳转化为time.asctime()的形式,如果无参数或者为None时,则会把time.time()作为参数传入。它的作用相当于time.asctime(time.localtime(sec))

  

 

2.datetime

  datetime比time高级了不少,可以理解为datetime基于time进行了封装,提供了更多实用的函数,主要包含一下几类:

  • timedelta:主要用于计算时间跨度
  • tzinfo:时区相关
  • time:只关注时间
  • date:只关注日期
  • datetime:同时有时间和日期
  • datezone:用于表示相对于 世界标准时间(UTC)的偏移量。

  在实际使用中,用得比较多的是datetime.datetime和datetime.timedelta,另外两个datetime.date和datetime.time实际使用和datetime.datetime并无太大差别。具体的会在本章后面详细列出实验案例,主要还是使用timedelta和datetime来计算一些时间和比较。如下

  

 

3.常用实例

3.1 time

  time.time()

  获取当前时间戳浮点型

  

 

  time.strftime("%Y-%m-%d %H:%M:%S")

  按指定格式输出当前时间字符串

  

 

  time.strptime()

  将时间字符串 转换为 时间数组

  

 

  time.mktime(变量,时间格式)

  将时间数组 转换成 时间戳

  

 

3.2 datetime

3.2.1 datetime

  datetime.now()

  

 

  datetime.strftime(tt, “%Y-%m-%d %H:%M:%S”)

  将时间 转换成 时间字符串

  

 

  datetime.strptime(tt, “%Y-%m-%d %H:%M:%S”)

  将时间字符串 转换 时间 (class ‘datetime.datetime’)

  

 

  datetime类型.timetuple()

  将时间类型 转换成 时间元祖

  

 

3.2.2 time

  time()

  

 

3.2.3 date

  date.today()

  

 

3.3 生成日期

3.3.1 直接生成当前日期

  

 

3.3.2 由时间戳或者Gregorian日历来生成

  

 

3.3.3 由现有时间创建

  

 

3.4 时间的计算

  

 

3.5 时间的比较

3.5.1 同类型的比较

  可以看到,想要比较时间,那必须都是时间类型的,目前演示的是都是同种类型的比较,比如date.today()对比

  

 

3.5.2 不同类型比较

  严格来说,这里不能叫做不同类型,只是转换到了最后datetime.now()比使用datestrptime转换的结果多了一个时间戳,但是这样子是可以比较的。

  为什么不同相同的time直接比较?因为目前本人没有发现time可以直接转换为时间类型的函数。如果有的话,麻烦各位大佬指出。

  

 

3.6 格式化和解析

  默认格式:YYYY-MM-DDTHH:MM:SS.mmmmm

  可以用strftime()生成其他格式,strptime可以将格式化的字符串转化成datetime实例

  

 

4.总结

  由于是写作业的时候需要使用到时间模块,所以这里做一个简单的记录。目前看来,个人感觉时间模块简单而又复杂,有time,date,datetime,搞的人真的很乱,比如time.strftime得到的结果是字符串,不方便时间类型比较。datetime.date.today()又只能输出年月日,没有时分秒,并且模块功能也不多,datetime.datetime.now()输出成为时间格式,但是后面又多个时间戳,如果需要时间类型比较就需要各种转换,比如3.5.2章节就需要把time.strftime的字符串转换为datetime的类型然后在比较时间大小。看来每次需要用到时间就要回来翻翻笔记了,或者去查看官网文档了: https://docs.python.org/zh-cn/3/library/datetime.html#datetime-objects

 

标签:struct,datetime,tm,sec,time,时间,python3
来源: https://www.cnblogs.com/lizexiong/p/16593037.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有