time
参考:
epoch
是时间开始的点,其值取决于平台。对于 Unix, epoch
是1970年1月1日00:00:00(UTC)。time.gmtime(0)
获取给定平台上的 epoch
。
time.struct_time
索引 | 属性 | 值 |
---|---|---|
0 | tm_year(年) | 如:1993 |
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 |
7 | tm_yday(一年内第几天) | 1 ~ 366 |
8 | tm_isdst(夏时令) | -1(未知)、0(不生效)、1(生效) |
常用函数
- strftime(format[, t]) 转换一个元组或 struct_time 表示的由 gmtime() 或 localtime() 返回的时间到由 format 参数指定的字符串。如果未提供 t ,则使用由 localtime() 返回的当前时间。 format 必须是一个字符串。如果 t 中的任何字段超出允许范围,则引发 ValueError 。
- strptime(string[, format]) 根据格式解析表示时间的字符串。 返回值为一个被 gmtime() 或 localtime() 返回的 struct_time 。
- time() 以浮点数表示从
epoch
开始的秒数的时间值 - gmtime([secs]) 将时间戳转换为UTC下的
struct_time,可选参数
secs 表示从epoch
到现在的秒数,默认为当前时间 - localtime([secs]) 与 gmtime() 相似,返回当地时间下的
struct_time
- mktime(t) localtime() 的反函数,返回一个浮点数,与 time() 兼容
- asctime([t]) 接收一个
struct_time
表示的时间,返回形式为:Sun Jun 20 23:21:05 1993 的字符串 - ctime([secs]) ctime(secs) 相当于 asctime(localtime(secs))
- strftime(format[, t]) 格式化日期,接收一个 struct_time 表示的时间,并返回以可读字符串表示的当地时间
- sleep(secs) 暂停执行调用线程指定的秒数
- altzone 本地 DST 时区的偏移量,以 UTC 为单位的秒数
- timezone 本地(非 DST)时区的偏移量,UTC 以西的秒数(西欧大部分地区为负,美国为正,英国为零)
- tzname 两个字符串的元组:第一个是本地非 DST 时区的名称,第二个是本地 DST 时区的名称
strftime 函数日期格式化符号说明
strftime 符号 | 描述 |
---|---|
%a | 本地化的缩写星期中每日的名称 |
%A | 本地化的星期中每日的完整名称 |
%b | 本地化的月缩写名称 |
%B | 本地化的月完整名称 |
%c | 本地化的适当日期和时间表示 |
%d | 十进制数 [01,31] 表示的月中日 |
%H | 十进制数 [00,23] 表示的小时(24小时制) |
%I | 十进制数 [01,12] 表示的小时(12小时制) |
%j | 十进制数 [001,366] 表示的年中日 |
%m | 十进制数 [01,12] 表示的月 |
%M | 十进制数 [00,59] 表示的分钟 |
%p | 本地化的 AM 或 PM |
%S | 十进制数 [00,61] 表示的秒 |
%U | 十进制数 [00,53] 表示的一年中的周数(星期日作为一周的第一天) |
%w | 十进制数 [0(星期日),6] 表示的周中日 |
%W | 十进制数 [00,53] 表示的一年中的周数(星期一作为一周的第一天) |
%x | 本地化的适当日期表示 |
%X | 本地化的适当时间表示 |
%y | 十进制数 [00,99] 表示的没有世纪的年份 |
%Y | 十进制数表示的带世纪的年份 |
%z | 时区偏移以格式 +HHMM 或 -HHMM 形式的 UTC/GMT 的正或负时差指示,其中 H 表示十进制小时数字,M 表示小数分钟数字 [-23:59, +23:59] |
%Z | 时区名称 |
%% | 字面的 ‘%’ 字符 |
注释:
- 当与 strptime() 函数一起使用时,如果使用 %I 指令来解析小时, %p 指令只影响输出小时字段。
- 范围真的是 0 到 61 ;值 60 在表示 leap seconds 的时间戳中有效,并且由于历史原因支持值 61 。
- 当与 strptime() 函数一起使用时, %U 和 %W 仅用于指定星期几和年份的计算。
实例
strftime
1 | from time import gmtime, strftime |
strptime
1 | import time |
1 | import time |
datetime
参考:
datetime
对象是包含来自 date
对象和 time
对象的所有信息的单一对象。
date
类表示一个由年、月、日组成的日期,格式为:datetime.date(year, month, day)
。
- year 范围为:[1, 9999]
- month 范围为:[1, 12]
- day 范围为 [1, 给定年月对应的天数]。
date 对象
类方法
- date.today() 返回当前的本地日期。等价于 date.fromtimestamp(time.time())。
- date.fromtimestamp(timestamp) 返回对应于 POSIX 时间戳的当地时间,例如 time.time() 返回的就是时间戳。
1 | import datetime |
实例方法
- date.replace(year=self.year, month=self.month, day=self.day) 返回一个具有同样值的日期,除非通过任何关键字参数给出了某些形参的新值。
- date.timetuple() 返回一个 time.struct_time,即 time.localtime() 所返回的类型。
- date.weekday() 返回一个整数代表星期几,星期一为 0,星期天为 6
- isoweekday() 返回一个整数代表星期几,星期一为 1,星期天为 7
- isocalendar() 返回格式为 (year,month,day) 的元组
- isoformat() 返回格式如 YYYY-MM-DD 的字符串
- date.ctime() 返回一个表示日期的字符串:
- strftime(format) 返回自定义格式的字符串
实例1:
1 | import time |
实例2:
1 | import datetime |
time 对象
一个 time 对象代表某日的(本地)时间,它独立于任何特定日期,并可通过 tzinfo 对象来调整。
class datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)
所有参数都是可选的。 tzinfo 可以是 None,或者是一个 tzinfo 子类的实例。 其余的参数必须是在下面范围内的整数:
0 <= hour < 24,
0 <= minute < 60,
0 <= second < 60,
0 <= microsecond < 1000000,
fold in [0, 1].
实例方法:
- isoformat() 返回 HH:MM:SS 格式的字符串
- replace(hour, minute, second, microsecond, tzinfo, * fold=0) 创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性
- strftime(format) 返回自定义格式的字符串
实例
1 | import datetime |
datetime 类
datetime 包括了 date 与 time 的所有信息,格式为:datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0),参数范围值参考 date 类与 time 类。
类方法:
- today() 返回当地的当前时间
- now(tz=None) 类似于 today(),可选参数 tz 可指定时区
- utcnow() 返回当前 UTC 时间
- fromtimestamp(timestamp, tz=None) 根据时间戳返回对应时间
- utcfromtimestamp(timestamp) 根据时间戳返回对应 UTC 时间
- combine(date, time) 根据 date 和 time 返回对应时间
实例:
1 | import datetime |
实例方法:
- date() 返回具有同样 year,month,day 值的 date 对象
- time() 返回具有同样 hour, minute, second, microsecond 和 fold 值的 time 对象
replace(year, month, day=self.day, hour, minute, second, microsecond, tzinfo, * fold=0) 生成一个新的日期对象,用参数指定的年,月,日,时,分,秒…代替原有对象中的属性 - weekday() 返回一个整数代表星期几,星期一为 0,星期天为 6
- isoweekday() 返回一个整数代表星期几,星期一为 1,星期天为 7
- isocalendar() 返回格式为 (year,month,day) 的元组
- isoformat() 返回一个以 ISO 8601 格式表示日期和时间的字符串 YYYY-MM-DDTHH:MM:SS.ffffff
- strftime(format) 返回自定义格式的字符串
1 | import datetime |
calendar 模块
参考:
calendar类
常用函数
- setfirstweekday(weekday) 设置每一周的开始(0 表示星期一,6 表示星期天)
- firstweekday() 返回当前设置的每星期的第一天的数值
- isleap(year) 如果 year 是闰年则返回 True ,否则返回 False
- leapdays(y1, y2) 返回 y1 至 y2 (包含 y1 和 y2 )之间的闰年的数量
- weekday(year, month, day) 返回指定日期的星期值
- monthrange(year, month) 返回指定年份的指定月份第一天是星期几和这个月的天数
- month(theyear, themonth, w=0, l=0) 返回月份日历
- prcal(year, w=0, l=0, c=6, m=3) 返回年份日历
- iterweekdays() 返回一个迭代器,迭代器的内容为一星期的数字
- itermonthdates(year, month) 返回一个迭代器,迭代器的内容为年、月的日期
- itermonthdays(year, month) 返回一个迭代器,迭代器的内容与 itermonthdates() 类似,为 year 年 month 月的日期,但不受 datetime.date 范围限制。
实例:
1 | import calendar |
实例2:
1 | from calendar import Calendar |
TextCalendar 类
TextCalendar 为 Calendar子类,用来生成纯文本日历。
实例方法:
- formatmonth(theyear, themonth, w=0, l=0) 返回一个多行字符串来表示指定年、月的日历
- formatyear(theyear, w=2, l=1, c=6, m=3) 返回一个 m 列日历,可选参数 w, l, 和 c 分别表示日期列数, 周的行数,和月之间的间隔
- prmonth(theyear, themonth, w=0, l=0) 与 formatmonth() 方法一样,返回一个月的日历。
- pryear(theyear, w=2, l=1, c=6, m=3) 与 formatyear() 方法一样,返回一整年的日历。
1 | from calendar import TextCalendar |
HTMLCalendar类
HTMLCalendar
类可以生成 HTML 日历。
实例方法:
- formatmonth(theyear, themonth, withyear=True) 返回一个 HTML 表格作为指定年、月的日历
- formatyear(theyear, width=3) 返回一个 HTML 表格作为指定年份的日历
- formatyearpage(theyear, width=3, css=‘calendar.css’, encoding=None) 返回一个完整的 HTML 页面作为指定年份的日历
1 | from calendar import HTMLCalendar |