在进行日期和时间操作前,我们必须先理解以下几个常用的术语
下面来看每个模块的常见用法 该模块主要用来获取当前时间,并进行格式化,基本用法如下 > import time # 返回时间戳 > time.time() 1589853649.8406465 # 以struc_time元组的形式返回当前时间 > time.localtime() time.struct_time(tm_year=2020, tm_mon=5, tm_mday=19, tm_hour=9, tm_min=6, tm_sec=56, tm_wday=1, tm_yday=140, tm_isdst=0) # 以struc_time元组的形式返回当前时间 > time.gmtime() time.struct_time(tm_year=2020, tm_mon=5, tm_mday=19, tm_hour=2, tm_min=0, tm_sec=8, tm_wday=1, tm_yday=140, tm_isdst=0) struc_time元组包含了9个元素,每个元素的含义如下
struc_time元组可以轻松访问其中的内容,用法如下 >>> time.localtime().tm_year 2020 >>> time.localtime().tm_mon 5 >>> time.localtime().tm_mday 19 >>> time.localtime().tm_hour 10 >>> time.localtime().tm_min 50 >>> time.localtime().tm_sec 18 日期的格式化和字符串格式化类似,内置了格式化标识符,通过strftime函数来进行格式化,每个标识符的作用如下 # %a表示星期的缩写 '%a', time.localtime()) > time.strftime( 'Tue' # %A表示星期的全称 '%A', time.localtime()) > time.strftime( 'Tuesday' # %b表示月份的缩写 '%b', time.localtime()) > time.strftime( 'May' # %B表示月份的全称 '%B', time.localtime()) > time.strftime( 'May' # %c表示 '%c', time.localtime()) > time.strftime( 'Tue May 19 09:33:57 2020' # %d表示每月的第几天 '%d', time.localtime()) > time.strftime( '19' # %H为十进制表示的小时, 24小时制,范围为00-23 '%H', time.localtime()) > time.strftime( '09' # %I为十进制表示的小时,12小时制,范围为01-12 '%I', time.localtime()) > time.strftime( '09' # %j表示一年中的第几天 '%j', time.localtime()) > time.strftime( '140' # %m表示十进制的月份,范围为01-12 '%m', time.localtime()) > time.strftime( '05' # %M表示十进制的分钟,范围为00到59 '%M', time.localtime()) > time.strftime( '34' # %p表示上午或者下午,值为AM或PM '%p', time.localtime()) > time.strftime( 'AM' # %S表示秒数,范围00到61 '%S', time.localtime()) > time.strftime( '36' # %U表示一年中的周数,范围为00-53 '%U', time.localtime()) > time.strftime( '20' # %w表示一周中的第几天,范围0-6,0表示星期日,以此类推 '%w', time.localtime()) > time.strftime( '2' # %W表示一年中的周数,范围为00-53 '%W', time.localtime()) > time.strftime( '20' # %x以本地规则表示日期 '%x', time.localtime()) > time.strftime( '05/19/20' # %X以本地规则表示时间 '%X', time.localtime()) > time.strftime( '09:34:51' # %y表示没有世纪的年份,即4位数年份的后两位 '%y', time.localtime()) > time.strftime( '20' # %Y表示完整年份 '%Y', time.localtime()) > time.strftime( '2020' # %z表示时区偏移 '%z', time.localtime()) > time.strftime( '+0800' # %Z 表示时区名称 '%Z', time.localtime()) > time.strftime( 'CST' # %% 表示一个百分号字面值 '%%', time.localtime()) > time.strftime( '%' 如果只是简单的格式化当前日期,内置的函数acstime和ctime是最简单的方式,当然也可以用多种格式化标识符进行组合,灵活的格式化日期,用法如下 >>> time.asctime() 'Tue May 19 10:52:51 2020'
>>> time.ctime() 'Tue May 19 09:59:11 2020'
>>> time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) '2020-05-19 09:50:50' > import datetime # 获取当前日期 > a = datetime.date.today() > datetime.date.today() datetime.date(2020, 5, 19) # 获取年,月,日 > a.year 2020 > a.month 5 > a.day 19 # 格式化 > a.isoformat() '2020-05-19'
# 获取当前的日期和时间 > datetime.datetime.now() datetime.datetime(2020, 5, 19, 10, 56, 50, 225742) > a = datetime.datetime.now() # 获取年,月,日,时,分,秒 > a.year 2020 > a.month 5 > a.day 19 > a.hour 10 > a.minute 56 > a.second 53
# 计算前一天的时间 1) > datetime.datetime.now() - datetime.timedelta(days = datetime.datetime(2020, 5, 18, 11, 5, 40, 612206) # 计算1小时后的时间 3600) > datetime.datetime.now() + datetime.timedelta(seconds = datetime.datetime(2020, 5, 19, 12, 8, 3, 839407) 该模块用于处理日历信息,内置了月份和星期的列表,可以当做一个常量来使用,用法如下 # 月份的列表 for i in calendar.month_name] [i ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] # 星期的列表 for i in calendar.day_name] [i ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'] 除此之外,也提供了一些年份相关的函数 # 判断一个年份是否为闰年 1997) > calendar.isleap( False 2020) > calendar.isleap( True # 返回两个年份间闰年的个数 1997, 2020) > calendar.leapdays( 5 对于日期和时间而言,最常用的还是time和datetime两个模块,掌握常用的日期获取和格式化操作,就足够应付大多数的开发需求了。 ·end· |
|