Python中表示时间的两种方式:
- 时间戳:相对于1970.1.1 00:00:00以秒计算的偏移量,唯一的
- 时间元组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
time
在python文档中,time是归类在常规操作系统服务中,它提供的功能更加接近于操作系统层面。其所能表述的日期范围被限定在1970-2038之间,如果需要表述范围之外的日期,可能需要考虑使用datetime模块更好。
常用方法:
- time.sleep(sec):推迟指定时间sec后继续运行
- time.localtime([sec]):将一个时间戳转化成一个当时时区的struct_time,如果sec参数未输入,则以当前时间为转化标准
- time.strftime(format[,t]):将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出
- time.time():返回当前时间的时间戳(以秒表示的浮点数)
- time.mktime(t):将一个struct_time转换为时间戳
- time.gmtime([sec]):将一个时间戳转化为UTC时区(0时区)的struct_time
- time.clock():不同系统含义不同。UNIX——返回进程时间,WINS第一次调用返回进程运行的实际时间,第二次调用是自第一次调用以后到现在的运行时间
- time.asctime([t])把一个时间的元组或者struct_time表示为“Sun Jun 20 23:21:05 1993”,如果无参数,则会把time.localtime()作为参数传入
- time.ctime([sec]):把一个时间戳转化为time.asctime()的形式,如果无参数或者为None时,则会把time.time()作为参数传入。它的作用相当于time.asctime(time.localtime(sec))
- time.strftime(format[,t]):把一个代表时间的元组或者struct_time转化为格式化的时间字符串。如果t为指定,将传入time.localtime()。如果元组中任何一个元素越界,ValueError的错误将会被抛出
代码实例:格式化输出需要的时间
datetime
datetime比time高级了不少,可以理解为datetime基于time进行了封装,提供了更多实用的函数,主要包含一下几类:
- timedelta:主要用于计算时间跨度
- tzinfo:时区相关
- time:只关注时间
- date:只关注日期
- datetime:同时有时间和日期
在实际使用中,用得比较多的是datetime.datetime和datetime.timedelta,另外两个datetime.date和datetime.time实际使用和datetime.datetime并无太大差别。datetime.datetime 主要会有以下属性及常用方法:
- datetime.year
- datetime.month
- datetime.day
- datetime.hour
- datetime.minute
- datetime.second
- datetime.microsecond
- datetime.tzinfo():时区
- datetime.date():返回date对象
- datetime.time():返回time对象
- datetime.replace(name=value)
- datetime.timetuple():返回time.struct_time 对象
- datetime.strftime(format):按照format进行格式化输出
除了实例本身具有的方法,类本身也提供了很多好用的方法:
- datetime.strptime(date_string,format): 给定时间格式解析字符串
- datetime.now([tz]):当前时间默认 localtime
- datetime.today():当前时间
timedelta