本文已参与「新人创作礼」活动, 一起开启掘金创作之路。
1. time
1.1 时间的三种表示方法
- 时间戳(timestamp): 从1997-01-01 00:00:00开始按秒计算的偏移量(float)
- 格式化的时间字符串
- 元组方式(struct_time): 共9个元素. 下面列出元组中的元素
索引 属性 值 0 tm_year(年) 1 tm_mon(月) 1 - 12 2 tm_mday(日) 1 - 31 3 tm_hour(时) 0 - 23 4 tm_min(分) 0 - 59 5 tm_sec(秒) 0 - 61(闰年秒占两秒) 6 tm_wday(星期几) 0 - 6(0为周日) 7 tm_yday(一年的第几天) 1 - 366 8 tm_isdst(是否是夏令时)
1.2 time模块方法
以 方法 返回值类型 说明 的格式展示
.localtime([seconds])struct_time将时间戳转换为当前时区的struct_time(无参数则表示当前时间).gmtime([seconds])struct_time将时间戳转换为UTC时区的struct_time(无参数则表示当前时间).time()float当前时间的时间戳.mktime(tuple)float将struct_time转换为时间戳.sleep(seconds)None线程推迟指定的时间运行(单位为秒).clock()floatUNIX: 返回"进程时间". Windows: 第一次调用返回进程运行的实际时间, 之后调用返回的是自第一次运行后到现在的运行时间..asctime([tuple])str传入表示时间的元组, 以'Sat Dec 2 15:07:10 2017'的格式返回(无参数则默认传入.localtime()).ctime([seconds])str同.asctime()不过传入的是时间戳(默认传入.time()).strftime(format[, tuple])str把一个代表时间的元组(未指定则传入.localtime())转化为格式化的时间字符串. 如: time.strftime("%Y-%m-%d %X") 输出 '2017-12-02 15:14:31'.strptime(string, format)struct_time.strftime()的逆操作.- 如:
time.strptime('2017-12-02 15:14:31', '%Y-%m-%d %X')输出time.struct_time(tm_year=2017, tm_mon=12, tm_mday=2, tm_hour=15, tm_min=14, tm_sec=31, tm_wday=5, tm_yday=336, tm_isdst=-1)
- 如:
1.3 format规则
| 格式 | 含义 |
|---|---|
| %a | 本地简化星期名称 |
| %A | 本地完整星期名称 |
| %b | 本地简化月份名称 |
| %B | 本地完整月份名称 |
| %c | 本地相应的日期和时间表示 |
| %d | 一个月中的第几天(01 - 31) |
| %H | 一天中的第几个小时(24小时制,00 - 23) |
| %I | 第几个小时(12小时制,01 - 12) |
| %j | 一年中的第几天(001 - 366) |
| %m | 月份(01 - 12) |
| %M | 分钟数(00 - 59) |
| %p | 本地am或者pm的相应符1 |
| %S | 秒(01 - 61)2 |
| %U | 一年中的星期数。 (00 - 53星期天是一个星期的开始。 )第一个星期天之前的所有天数都放在第0周。3 |
| %w | 一个星期中的第几天(0 - 6,0是星期天)3 |
| %W | 和%U基本相同,不同的是%W以星期一为一个星期的开始。 |
| %x | 本地相应日期 |
| %X | 本地相应时间 |
| %y | 去掉世纪的年份(00 - 99) |
| %Y | 完整的年份 |
| %Z | 时区的名字(如果不存在为空字符) |
| %% | ‘%’字符 |
2. datetime
2.1 date
以 方法 返回值类型 说明 的格式展示
date(year, month, day)date- 类方法/属性
.maxdatedatetime.date(9999, 12, 31), str()或print()为'9999-12-31'.mindate'0001-01-01'.resolutiontimedeltadatetime.timedelta(1), str: '1 day, 0:00:00'. date对象表示日期的最小单位(天).today()date当前本地日期.fromtimestamp(timestamp)date返回给定时间戳对应的日期.fromordinal(ordinal)date将Gregorian日历时间转换为date对象
- 实例方法/属性
.yearint年.monthint月.dayint日.replace(year, month, day)date生成一个新的日期对象, 用参数指定的年, 月, 日代替原有对象中的属性(原有对象仍保持不变).timetuple()struct_time返回日期对应的time.struct_time对象.toordinal()int返回日期对应的Gregorian Calendar日期.weekday()int(0-6)返回weekday, 如果是星期一, 返回0; 如果是星期二, 返回1, 以此类推.isoweekday()int(1-7)返回weekday, 如果是星期一, 返回1; 如果是星期二, 返回2, 以此类推.isocalendar()tuple返回格式如(year,month,day)的元组.isoformat()str返回格式如'YYYY-MM-DD’的字符串.strftime(format)str返回格式化的字符串, 参考time模块格式化规则
- 运算符重载
date ± timedeltadate日期加上或减去一个时间间隔(timedelta参考下文)date1 - date2timedelta计算两个日期的时间间隔date1 比较运算符 date2bool两个日期进行比较
2.2 time
time(hour[, minute[, second[, microsecond[, tzinfo]]]])timetzinfo表示时区信息- 类方法/属性
.maxtimedatetime.time(23, 59, 59, 999999), str: '23:59:59.999999'.mintimedatetime.time(0, 0, 0, 0), str: '00:00:00'.resolutiontimedeltadatetime.timedelta(0, 0, 1) str: '0:00:00.000001'. 时间的最小单位(微秒)
- 实例方法/属性
.hour, .minute, .second, ...int时, 分, 秒, 微秒.tzinfo时区信息 |.replace([ hour[, ...]])time创建一个新的时间对象, 用参数指定的时, 分, 秒, 微秒代替原有对象中的属性(原有对象仍保持不变).isoformat()str返回型如"HH:MM:SS"格式的字符串表示.strftime(format)str返回自定义格式化字符串
- 运算符重载 同date类
2.3 datetime
datetime(...)datetimedate与time类的所有构造器参数- 类方法/属性
.maxdatetimedatetime所能表示的最大值.mindatetimedatetime所能表示的最小值.resolutiontimedeltadatetime最小单位.today()datetime返回一个表示当前本地时间的datetime对象.now([tz])datetime获取tz参数所指时区(默认本地)的本地时间.utcnow()datetime返回一个当前utc时间的datetime对象.fromtimestamp(timestamp[, tz])datetime根据时间戮创建一个datetime对象,参数tz指定时区信息.utcfromtimestamp(timestamp)datetime根据时间戮创建一个datetime对象.combine(date, time)datetime根据date和time, 创建一个datetime对象.strptime(date_string, format)datetime将格式字符串转换为datetime对象
- 实例方法/属性
- date与time类的所有属性
.date()date获取date对象.time()time获取time对象.replace([ hour[, ...]])datetime创建一个新的时间对象(原有对象仍保持不变).timetuple()struct_time类型转换.utctimetuple()struct_time类型转换.toordinal()int返回日期对应的Gregorian Calendar日期.weekday()int(0-6)0表示周一.isocalendar()tuple返回格式如(year,month,day)的元组.isoformat()str返回自定义格式化字符串.ctime()str以'Sat Dec 2 15:07:10 2017'的格式返回时间.strftime(format)str返回自定义格式化字符串
- 运算符重载 同date类
3. calendar
.calendar(theyear, w=2, l=1, c=6, m=3)str返回指定年份的年历, w: 每个日期的宽度, l: 每一行的纵向宽度, c: 月与月之间的宽度, m: 一排显示几个月.firstweekday( )-返回当前每周起始日期的设置. 默认情况下, 首次载入caendar模块时返回0, 即星期一.isleap(year)-是闰年返回True, 否则为false.leapdays(y1,y2)-返回在Y1, Y2两年之间的闰年总数.month(year,month,w=2,l=1)-返回year年month月日历.monthcalendar(year,month)list返回一个整数的单层嵌套列表. 每个子列表装载代表一个星期的整数. Year年month月外的日期都设为0;范围内的日子都由该月第几日表示, 从1开始.monthrange(year,month)tuple返回两个整数. 第一天是该月的星期几的日期码(0-6),第二个是该月的天数.prcal(year,w=2,l=1,c=6)None相当于print(calendar.calendar(year,w,l,c)).prmonth(year,month,w=2,l=1)None相当于 print(calendar.calendar(year, w, l, c)).setfirstweekday(weekday)None设置每周的起始日期码(0-6).timegm(tupletime)float和time.gmtime相反: 接受一个时间元组形式, 返回该时刻的时间辍.weekday(year,month,day)int返回给定日期对应星期几的日期码(0-6)