Python之日期和时间

Python标准库中提供了时间和日期的支持:

calendar:日历相关;

time、datetime:时间相关;

time模块

时间的主要三种表示方式:

时间戳:1970-1-1至今的秒数(float),time.time();

格式化时间字符串:如'2018-11- 07 20:23',time.strftime('%Y-%m-%d');

结构化时间time.struct_time:包含年月日等的元组,time.localtime();

struct_time是一个9元组:

time模块中主要函数

time.time():返回当前时间的时间戳(1970纪元后经过的浮点秒数);

time.mktime(tupletime):接受时间元组(struct_time),并返回时间戳;

time.localtime([secs]):接受时间辍(默认为当前时间),并返回当地时间下的时间元组t;

time.gmtime([secs]):接受时间辍(默认为当前时间)并返回格林威治时间的时间元组t(t.tm_isdst始终为0);

time.mktime(tupletime):接受时间元组并返回时间辍;

time.strftime(fmt[,tupletime]):接受时间元组(默认当前时间),并返回以可读字符串表示的当地时间,格式由fmt决定;

time.strptime(str,fmt='%a %b %d %H:%M:%S %Y'):根据fmt的格式把一个时间字符串解析为时间元组;

time.asctime([tupletime]):接受时间元组并返回一个可读的形式为"Thu Nov 8 09:31:15 2018"的24字符的字符串;

time.ctime([secs]):作用相当于asctime(localtime(secs)),未给参数相当于asctime();

time.tzset():根据环境变量TZ重新初始化时间相关设置

休眠及运行时间

time.sleep(secs):休眠指定的秒数(float,0.001则1毫秒);

time.perf_counter():返回计时器的精准时间(系统的运行时间),包含系统的睡眠时间;一般使用多次调用的结果之差

time.clock( ):用以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用(3.3后用perf_counter);

时间格式

datetime模块

datetime模块中包含如下类:

date:日期对象,常用的属性有year, month, day

time:时间对象

datetime:日期时间对象,常用的属性有hour, minute, second, microsecond

datetime_CAPI:日期时间对象C语言接口

timedelta:时间间隔,即两个时间点之间的长度

tzinfo:时区信息对象

包含的常量:

datetime.MAXYEAR:返回能表示的最大年份9999;

datetime.MINYEAR:返回能表示的最小年份1;

date对象

由year年份、month月份及day日期三部分构成:

date(year,month,day)

静态成员(获取时间):

date.today():当前日期

date.fromtimestamp(stamps):把时间戳转换为日期

date.fromordinal(days):把天数(公元1年1月1日为1)转换为date类型;

成员函数:

strftime(fmt):格式化输出,格式化参数参见time部分;直接print(t)则输出'2018-11-08';

ctime():相当于%c的格式化输出(24字符串)

isocalendar():返回(year,month,day)三元组;

isoformat():返回‘2018-10-27'样式字符串;

isoweekday(): 返回符合ISO标准星期数(周一为1…周日为7) ;

weekday(): (周一为0…周日为6);

toordinal(): 返回公元公历开始到现在的天数;公元1年1月1日为1;

timetuple():返回一个类型为time.struct_time的数组,但有关时间的部分元素值为0;

日期可比较大小,以及加减:

两日期差:返回timedelta,(x-y).days返回相差天数;

日期+timedelta:返回新的日期;

time类

由hour小时、minute分钟、second秒、microsecond毫秒和tzinfo五部分组成

time([hour[, minute[, second[, microsecond[, tzinfo]]]]])#默认time(0,0)

成员函数:

strftime(fmt):格式化输出,格式化参数参见time部分;

isoformat():返回类'10:21:26.377219'字符串;

datetime类

可以看做是date类和time类的合体,其大部分的方法和属性都继承于这两个类

datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])

静态成员(获取时间):

datetime.now():当前日期时间

datetime.combine(date,time):使用日期、时间对象获取datetime对象;

datetime.utcnow():当前日期时间的时间元组;

datetime.strptime(tstr, fmt):根据参数构造对象;

datetime.utcfromtimestamp(stamps):根据时间戳构造对象;

成员函数:

date():获取日期部分;

time():获取时间部分;

utctimetuple():返回时间元组;

timedelta类

用于表示两个datetime对象的差值

timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

包含如下属性:

days:天数

microseconds:微秒数(>=0 并且

seconds:秒数(>=0 并且

total_seconds():获取总的秒数

Calendar模块

此模块的函数都是日历相关的,星期一是默认的每周第一天,星期天是默认的最后一天。更改设置需调用calendar.setfirstweekday()函数。

函数说明:

calendar.calendar(year,w=2,l=1,c=6):返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c。 每日宽度间隔为w字符。每行长度为21* W+18+2* C。l是每星期行数。

calendar.firstweekday( ):返回当前每周起始日期的设置。默认情况下,首次载入caendar模块时返回0,即星期一。

calendar.isleap(year):是闰年返回True,否则为false。

calendar.leapdays(y1,y2):返回在Y1,Y2两年之间的闰年总数。

calendar.month(year,month,w=2,l=1):返回一个多行字符串格式的year年month月日历,两行标题,一周一行。每日宽度间隔为w字符。每行的长度为7* w+6。l是每星期的行数。

calendar.monthcalendar(year,month):返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。Year年month月外的日期都设为0;范围内的日子都由该月第几日表示,从1开始。

calendar.monthrange(year,month):返回两个整数。第一个是该月的星期几的日期码,第二个是该月的日期码。日从0(星期一)到6(星期日);月从1到12。

calendar.prcal(year,w=2,l=1,c=6):相当于 print calendar.calendar(year,w,l,c).

calendar.prmonth(year,month,w=2,l=1):相当于 print calendar.calendar(year,w,l,c)。

calendar.setfirstweekday(weekday):设置每周的起始日期码。0(星期一)到6(星期日)。

calendar.timegm(tupletime):和time.gmtime相反:接受一个时间元组形式,返回该时刻的时间辍(1970纪元后经过的浮点秒数)。

calendar.weekday(year,month,day):返回给定日期的日期码。0(星期一)到6(星期日)。月份为 1(一月) 到 12(12月)。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181108G1UH0700?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券