文章目录
time模块
方法及属性
函数 | 说明 |
---|---|
time.altzone | 返回格林威治西部的夏令时地区的偏移秒数 |
time.timezone | 是当地时区(未启动夏令时)距离格林威治的偏移秒数 |
time.tzname | 是当地时区(未启动夏令时)距离格林威治的偏移秒数 |
time.localtime([secs]) | 接收时间戳(1970纪元后经过的浮点秒数)并返回当地时间下的时间元组t,不给参数显示当前时间元祖 |
time.gtime([secs]) | 接收时间戳(1970纪元后经过的浮点秒数)并返回格林威治天文时间下的时间元组t |
time.time() | 返回当前时间的时间戳(1970纪元后经过的浮点秒数) |
time.mktime([tupletime]) | 接受时间元组并返回时间戳(1970纪元后经过的浮点秒数) |
time.sleep(secs) | 延迟运行,secs为秒数 |
time.asctime([tupletime]) | 接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日周二18时07分14秒)的24个字符的字符串,不给参数显示当前时间字符串 |
time.clock() | 用以浮点数计算的秒数返回当前的CPU时间 |
time.ctime([secs]) | 作用相当于asctime(localtime(secs)) ,未给参数相当于asctime() |
time.strftime(fmt[,tupletime]) | 接收以时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定 |
time.strptime(str,fmt) | 根据fmt的格式把一个时间字符串解析为时间元组 |
time.tzset() | 根据环境变量TZ重新初始化时间相关设置(windows不可用) |
说明
时间元组
time.struct_time(tm_year=2020, tm_mon=11, tm_mday=4, tm_hour=11, tm_min=0, tm_sec=26, tm_wday=2, tm_yday=309, tm_isdst=0)
属性 | 说明 |
---|---|
tm_year | 4位数年 |
tm_mon | 月 |
tm_mday | 日 |
tm_hour | 小时,0 到 23 |
tm_min | 分钟,0 到 59 |
tm_sec | 秒,0 到 61 (60或61 是闰秒) |
tm_wday | 一周的第几日, 0到6 (0是周一) |
tm_yday | 一年的第几日, 1 到 366(儒略历) |
tm_isdst | 夏令时,-1, 0, 1, -1是决定是否为夏令时的旗帜 |
时间格式化符号
符号 | 说明 |
---|---|
%y | 两位数的年份表示(00-99) |
%Y | 四位数的年份表示(000-9999) |
%m | 月份(01-12) |
%d | 月内中的一天(0-31) |
%H | 24小时制小时数(0-23) |
%I | 12小时制小时数(01-12) |
%M | 分钟数(00-59) |
%S | 秒(00-59) |
%a | 本地简化星期名称 |
%A | 本地完整星期名称 |
%b | 本地简化的月份名称 |
%B | 本地完整的月份名称 |
%c | 本地相应的日期表示和时间表示 |
%j | 年内的一天(001-366) |
%p | 本地A.M.或P.M.的等价符 |
%U | 一年中的星期数(00-53)星期天为星期的开始 |
%w | 星期(0-6),星期天为 0,星期一为 1,以此类推。 |
%W | 一年中的星期数(00-53)星期一为星期的开始 |
%x | 本地相应的日期表示 |
%X | 本地相应的时间表示 |
%Z | 当前时区的名称 |
%% | %号本身 |
示例
import time,os
print('time.altzone:', time.altzone)
print('time.timezone:', time.timezone)
a, b = time.tzname[0], time.tzname[1]
print('time.tzname:', a.encode('latin-1').decode('gbk'))
print('time.tzname:', b.encode('latin-1').decode('gbk'))
t = time.localtime()
print('time.localtime():', t)
print('time.asctime():', time.asctime())
# print(time.sleep(10))
print('time.clock():', time.clock())
print('time.gmtime():', time.gmtime())
print('time.mktime():', time.mktime(t))
print('time.time():', time.time())
print('time.strftime():', time.strftime('%Y-%m-%d %H:%M:%S'))
print('time.strptime():', time.strptime("2020-11-04 10:49:02", '%Y-%m-%d %H:%M:%S'))
# linux可用,windows无
os.environ['TZ'] = 'AEST-10AEDT-11,M10.5.0,M3.5.0'
time.tzset()
print (time.strftime('%X %x %Z'))
datetime
常量
常量 | 说明 |
---|---|
datetime.MINYEAR | date 或者 datetime 对象允许的最小年份, 常量 MINYEAR 是 1 |
datetime.MAXYEAR | date 或 datetime 对象允许最大的年份,常量 MAXYEAR 是 9999 |
类型
datetime.date
时间的日期部分
-
说明
类/方法/属性 说明 date(year, month, day)
日期时间 date.today()
返回当前的本地日期 date.fromtimestamp(timestamp)
返回对应于 POSIX 时间戳的当地时间 date.fromtimestamp(timestamp)
返回对应于 POSIX 时间戳的当地时间 date.min
最小的日期 date.max
最大的日期 date.resolution
两个日期对象的最小间隔 date.year
年 date.month
月 date.day
日 d.replace(year=self.year, month=self.month, day=self.day)
替换某个时间属性 d.weekday()
返回一个星期的第几天,6代表周日 d.isoweekday()
返回星期几,7代表周日 d.isoformat()
格式化时间 d.ctime()
返回一个表示日期的字符串 d.strftime(format)
格式化时间 其中d代表时间对象
-
示例
from datetime import date print(date(2008, 1, 1)) print(date.today()) print(date.fromtimestamp(time.time())) d = date.fromtimestamp(time.time()) print(d.replace(day=26)) print(d.weekday()) print(d.isoweekday()) print(d.isoformat()) print(d.ctime()) print(d.strftime("%d/%m/%y"))
datetime.time
时间的时分秒部分
- 说明
类/方法/属性 说明 time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)
时间 t.min
/t.max
/t.resolution
最早/最晚/最小的差 t.hour
/t.minute
/t.second
时/分/秒 t.replace(hour=self.hour, minute=self.minute, second=self.second, microsecond=self.microsecond, tzinfo=self.tzinfo, * fold=0)
替换某个时间属性 t.strftime(farmat)
返回一个由显式格式字符串所指明的代表时间的字符串性 - 示例
from datetime import time, datetime print(time(10, 10, 10)) t = datetime.now() print(t.min, t.max, t.hour, t.minute, t.second) print(t.replace(hour=2)) print(t.ctime()) print(t.strftime("%H-%M-%S"))
datetime.datetime
- 说明
其中d代表时间对象类/方法/属性 说明 datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)
详细时间 datetime.today()
返回当前的本地时间 datetime.now()
返回当前的本地时间 datetime.utcnow()
返回当前的utc时间 datetime.fromtimestamp(timestamp)
将时间戳格式化 datetime.utcfromtimestamp(timestamp)
将时间戳格式化UTC datetime.strptime(date_string,format)
格式化时间 d.min
最早的datetime d.max
最大的datetime d.resolution
两个不相等的 datetime 对象之间可能的最小间隔 d.year
/d.month
/d.day
/d.hour
/d.minute
/d.second
年/月/日/时/分/秒 d.date()
date对象 d.time()
time对象 d.timetz()
time对象 d.replace(year=self.year, month=self.month, day=self.day, hour=self.hour, minute=self.minute, second=self.second, microsecond=self.microsecond, tzinfo=self.tzinfo, * fold=0)
替换时间 d.astimezone(tz=None)
具有tz属性的时间对象 d.utcoffset()
如果 tzinfo 为 None,则返回 None d.dst()
如果 tzinfo 为 None,则返回 None d.tzname()
如果 tzinfo 为 None,则返回 None d.timetuple()
时间元组 d.utctimetuple()
utc时间元组 d.toordinal()
返回日期的预期格列高利历序号 d.timestamp()
时间戳 d.weekday()
星期几,0代表周一 d.isoweekday()
星期几,1代表周一 d.isocalendar()
返回一个由三部分组成的 named tuple: year, week 和 weekday d.ctime()
返回一个表示日期和时间的字符串 d.strftime(farmat)
返回一个由显式格式字符串所指明的代表日期和时间的字符串 - 示例
from datetime import datetime print(datetime(2008, 10, 10)) print(datetime.today()) print(datetime.now()) print(datetime.utcnow()) t = time.time() print(datetime.fromtimestamp(t)) print(datetime.utcfromtimestamp(t)) print(datetime.strptime('2005-01-01 10:10:10', "%Y-%m-%d %H:%M:%S")) d = datetime.now() print(d.min) print(d.max) print(d.resolution) print(d.year) print(d.date()) print(d.time()) print(d.timetz()) print(d.replace(year=2006)) print(d.astimezone()) print(d.utcoffset()) print(d.tzname()) print(d.timetuple()) print(d.utctimetuple()) print(d.toordinal()) print(d.timestamp()) print(d.weekday()) print(d.isoweekday()) print(d.isocalendar()) print(d.ctime()) print(d.strftime('%Y-%m-%d %H:%M:%S'))
datetime.timedelta
表示两个date/time的时间间隔
-
语法:
class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
-
类属性
属性 说明 timedelta.min
负数最大时间差,相当于 timedelta(-999999999)
timedelta.max
正数最大时间差,相当于 timedelta(days=999999999, hours=23, minutes=59, seconds=59, microseconds=999999)。
timedelta.resolution
两个时间的最小差值 相当于 timedelta(microseconds=1)
-
使用示例
import datetime print('datetime.MINYEAR', datetime.MINYEAR) print('datetime.MAXYEAR', datetime.MAXYEAR) from datetime import timedelta d = timedelta(microseconds=-1) print(d.days, d.seconds, d.microseconds) today = datetime.datetime.now().date() print(today) yesterday = today - timedelta(days=1) print(yesterday) shangzhou = today - timedelta(weeks=1)
更多详阅官方文档
Calendar-日历
可以输出像Unix cal那样的日历,还提供了其他与日历相关的实用函数,默认情况下,这些日历把星期一当做一周的第一天,星期天为一周的最后一天
全局性参数 | 说明 |
---|---|
w | 每个单元格宽度,默认0,内部已做处理,最小宽度为2, |
l | 每列换l行,默认为0,内部已做处理,至少换行1行, |
c | 表示月与月之间的间隔宽度,默认为6,内部已做处理,最小宽度为2, |
m | 表示将12个月分为m列 |
模块属性/方法
方法/属性 | 说明 |
---|---|
setfirstweekday() | 指定一周的第一天,0为周一,6为周日 |
firstweekday() | 返回一周的第一天,0为周一,6为周日 |
isleap(year) | 判断指定年是否为闰年 |
leapdays(year1,year2) | 返回year1与year2年份之间的闰年数量,包前不包后 |
weekday(year,month,day) | 获取指定日期为星期几,0为周一,6为周日 |
weekheader(n) | 返回包含星期的英文缩写,n表示英文缩写所占的宽度 |
monthrange(year,month) | 返回一个由一个月第一个天的星期与当前月的天数组成的元组 |
monthcalendar(year,month) | 返回一个月中天数列表(不是当前月份的天数为0),按周划分,为一个二维数组 |
prmonth(year,month,w=0,l=0) | 打印一个月的日历 |
month(year,month,w=0,l=0) | 返回一个月的日历字符串 |
prcal(year, w=0, l=0, c=6, m=3) | 打印一年的日历 |
calendar(year, w=0, l=0, c=6, m=3) | 返回一年的日历字符串 |
示例
import calendar
calendar.setfirstweekday(6)
print(calendar.firstweekday())
print(calendar.isleap(2020))
print(calendar.isleap(2021))
print(calendar.leapdays(2000, 2020))
print(calendar.weekday(2020, 11, 10))
print(calendar.weekheader(4))
print(calendar.monthrange(2020, 11))
print(calendar.monthcalendar(2020, 11))
calendar.prmonth(2020, 11)
print(calendar.month(2020, 11))
calendar.prcal(2020, m=4)
print(calendar.calendar(2020, m=4))
calendar.Calendar(firstweekday=0)类
firstweekday为一个整数,指定一周的第一天,0是星期一(默认),6为星期日
- 以下迭代方法/属性均包括月份开始那周的所有日期和月份结束那周的所有日期
- width表示将一年中12个月份进行划分,每width个月为一份,每一份包含各个月份,每个月份包含周,每周包含日期信息
方法/属性 | 说明 |
---|---|
iterweekdays() | 获取一周的数字的迭代器,第一个值与firstweekday的值相同 |
itermonthdates(year,month) | 获取一个月日期的迭代器,此迭代器会返回指定月份的所有日期, |
itermonthdays(year,month) | 返回一个月天数的迭代器(不是当前月份的天数为0),此迭代器将返回指定月份的日期数字 |
itermonthdays2(year,month) | 返回一个月天数与星期的迭代器(不是当前月份的天数为0),此迭代器将返回指定月份的日期数字与星期几所代表的数字组成的元组 |
monthdatescalendar(year,month) | 返回一个月日期列表,按周划分,为一个二维数组 |
monthdayscalendar(year,month) | 返回一个月中天数列表(不是当前月份的天数为0),按周划分,为一个二维数组 |
monthday2scalendar(year,month) | 返回一个月中天数与星期的列表(不是当前月份的天数为0),按周划分,为一个二维数组 |
yeardatescalendar(year,width=3) | 返回一年中所有的日期,为一个4维数组。 |
yeardayscalendar(year,width=3) | 返回一年中每个月的天数,为一个4维数组 |
yeardays2calendar(year,width=3) | 返回一年中农每个月的天数与星期的元组,为一个4维的元组列表 |
示例
from calendar import Calendar
c = Calendar()
# c = Calendar(firstweekday=6)
print(list(c.iterweekdays()))
print(list(c.itermonthdates(2020, 11)))
print(list(c.itermonthdays(2020, 11)))
print(list(c.itermonthdays2(2020, 11)))
print(list(c.monthdatescalendar(2020, 11)))
print(list(c.monthdayscalendar(2020, 11)))
print(list(c.monthdays2calendar(2020, 11)))
print(list(c.yeardatescalendar(2020)))
print(list(c.yeardayscalendar(2020)))
print(list(c.yeardays2calendar(2020)))
calendar.TextCalendar(firstweekday=0)类
firstweekday为一个整数,指定一周的第一天,0是星期一(默认),6为星期日
方法/属性 | 说明 |
---|---|
formatmonth(year,month,w=0, l=0) | 以多行字符串形式返回一个月的日历 |
prmonth(year,month,w=0, l=0) | 打印一个月日历 |
formatyear(year,w=2, l=1,c=6,m=3) | 以多行字符串形式返回一年的日历 |
pryear(year,w=2, l=1,c=6,m=3) | 打印年日历 |
示例
from calendar import TextCalendar
# c = TextCalendar()
c = TextCalendar(firstweekday=6)
print(c.formatmonth(2020, 11))
print(c.formatyear(2020, m=4))
c.prmonth(2020, 11)
c.pryear(2020, m=3)
calendar.HTMLCalendar(firstweekday=0)类
firstweekday为一个整数,指定一周的第一天,0是星期一(默认),6为星期日
方法/属性 | 说明 |
---|---|
formatmonth(year,month,withyear=True) | 返回一个月日历的html内容,withyear是否显示年份,默认为True,即显示年份 |
formatyear(year,width=3) | 返回一年日历的html内容 |
formatyearpage(year, width=3, css='calendar.css', encoding=None) | 返回一年日历的html内容,width表示将12个月分为width列,css可自定义css样式,encoding编码方式 |
示例
from calendar import HTMLCalendar
# c = HTMLCalendar()
c = HTMLCalendar(firstweekday=6)
print(c.formatmonth(2020, 11, withyear=True))
print(c.formatyear(2020, width=3))
print(c.formatyearpage(2020, width=3))