Python之日期和时间

目录

time模块

时间格式化

struct_time

time模块中主要函数

休眠及运行时间

datetime模块

date类

time类

datetime类

timedelta类

Calendar模块


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

  • calendar:日历相关;

  • time、datetime:时间相关;

格式化当前时间:

  • time模块:time.strftime('%Y-%m-%d', time.localtime(time.time()))
  • datetime模块:datetime.datetime.now().strftime('%Y-%m-%d')

time模块

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

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

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

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

时间格式化

格式说明
%a显示简化星期名称
%A显示完整星期名称
%b显示简化月份名称
%B显示完整月份名称
%c

本地相应的日期和时间表示

'Thu Nov  8 09:31:15 2018'

%d显示当月第几天
%f显示当前微妙数
%H按24小时制显示小时
%I按12小时制显示小时
%j显示当年第几天
%m显示月份
%M显示分钟数
%p本地am或者pm的相应符
%S显示秒数
%U一年中的星期数
%w显示在星期中的第几天,默认从0开始表示周一
%W和%U基本相同
%x本地相应日期(09:27:21)
%X本地相应时间'月/日/年'(10/29/18)
%y去掉世纪的年份(00 - 99)
%Y完整的年份
%Z时区的名字(如果不存在为空字符)
%%'%'字符串

输出精确到毫秒(%f为微妙,去掉后三位则近似毫秒):

print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3])

struct_time

struct_time是一个9元组:

序号属性
0tm_year2008
1tm_mon1 到 12
2tm_mday1 到 31
3tm_hour0 到 23
4tm_min0 到 59
5tm_sec0 到 61 (60或61 是闰秒)
6tm_wday0到6 (0是周一),一周的第几日
7tm_yday1 到 366,一年的第几天
8tm_isdst是否为夏令时:默认-1;1为夏令时,0为非

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 并且 <1秒) 

  • seconds:秒数(>=0 并且 <1天)

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月)。

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值