python进阶教程day_Python进阶教程m5–时间,日期

1 time模块

time模块有2种重要的时间数据类型,一种是典型的浮点数据,表示从epoch开始走过的秒数;另外一种是struct_time数据类型,struct_time是一种named tuple类型的数据,既可以通过下标访问元素也可以通过属性名来访问,它的结构是这样的:

索引属性值

0tm_year4位数字,比如2020

1tm_mon范围[1, 12]

2tm_mday范围 [1, 31]

3tm_hour范围 [0, 23]

4tm_min范围 [0, 59]

5tm_sec范围 [0, 61]

6tm_wday范围 [0, 6], 周一是 0

7tm_yday范围 [1, 366]

8tm_isdst0, 1 or -1

N/Atm_zone时区缩写

N/Atm_gmtoff偏移UTC东部的秒数

1.1 time.sleep(interval) 延时interval秒

利用time.sleep()函数可以实现延时功能,interval单位是s,浮点类型,表示延时的时长。

print('延时2s前......')

time.sleep(2)

print('延时2s结束')

==========结果:

延时2s前......

延时2s结束

1.2 获取从epoch开始的秒数time.time()

获取从epoch(January 1, 1970, 00:00:00 (UTC))开始的秒数:

print('time.time():',time.time())

==========结果:

time.time(): 1594391129.8763058

1.3 epoch秒数和struct_time相互转换

输入输出

gmtime()从epoch开始的秒数UTC struct_time

localtime()从epoch开始的秒数本地struct_time

calendar.timegm()UTC struct_time从epoch开始的秒数

mktime()本地struct_time从epoch开始的秒数

gmtime() 和 localtime() 如果不带epoch开始的秒数,就默认使用time.time()获取的当前秒数。 mktime() 必须带入参。

print('获取UTC时间:')

print('time.gmtime():',time.gmtime())

print('获取本地时间:')

print('time.localtime():',time.localtime())

print('epoch为0的时间:')

print('time.gmtime(0):',time.gmtime(0))

print('time.localtime(0):',time.localtime(0))

print('本地时间转换为epoch秒数')

b = time.localtime()

print('time.mktime():',time.mktime(b))

==========结果:

获取UTC时间:

time.gmtime(): time.struct_time(tm_year=2020, tm_mon=7, tm_mday=10, tm_hour=14, tm_min=25, tm_sec=29, tm_wday=4, tm_yday=192, tm_isdst=0)

获取本地时间:

time.localtime(): time.struct_time(tm_year=2020, tm_mon=7, tm_mday=10, tm_hour=22, tm_min=25, tm_sec=29, tm_wday=4, tm_yday=192, tm_isdst=0)

epoch为0的时间:

time.gmtime(0): time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

time.localtime(0): time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

本地时间转换为epoch秒数

1.4 标准格式字符串转换

time.asctime()

输入为struct_time,转换为类似'Tue Jul 21 01:16:45 2020'的字符串形式,日期字段的长度为两个字符,如果只有一位长度则会以空字符填充。

如果输入为None或者无输入,转换当前获取的struct_time进行转换。

b = time.localtime()

print('time.asctime():',time.asctime(b))

==========结果:

time.asctime(): Fri Jul 10 22:25:29 2020

time.ctime()

输入为epoch开始的秒数,转换为类似'Tue Jul 21 01:16:45 2020'的字符串形式。

如果输入为None或者无输入,转换当前获取的epoch秒数进行转换。

c=time.time()

print('time.ctime():',time.ctime(c))

==========结果:

time.ctime(): Fri Jul 10 22:25:29 2020

1.5 自定义格式字符串转换

使用asctime()或者ctime()可以转换为特定格式的时间字符串,如果想输出自定义格式的时间字符串,则可以使用到格式化指令进行转换:

指令含义注释

%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 。当与 strptime() 函数一起使用时,如果使用 %I 指令来解析小时, %p 指令只影响输出小时字段

%S十进制数 [00,61] 表示的秒。支持闰秒

%U十进制数 [00,53] 表示的一年中的周数(星期日作为一周的第一天)作为。在第一个星期日之前的新年中的所有日子都被认为是在第0周。当与 strptime() 函数一起使用时, %U 和 %W 仅用于指定星期几和年份的计算

%w十进制数 [0(星期日),6] 表示的周中日。

%W十进制数 [00,53] 表示的一年中的周数(星期一作为一周的第一天)作为。在第一个星期一之前的新年中的所有日子被认为是在第0周。当与 strptime() 函数一起使用时, %U 和 %W 仅用于指定星期几和年份的计算

%x本地化的适当日期表示。

%X本地化的适当时间表示。

%y十进制数 [00,99] 表示的没有世纪的年份。

%Y十进制数表示的带世纪的年份。

%z时区偏移以格式 +HHMM 或 -HHMM 形式的 UTC/GMT 的正或负时差指示,其中H表示十进制小时数字,M表示小数分钟数字 [-23:59, +23:59] 。

%Z时区名称(如果不存在时区,则不包含字符)。

%%字面的 ‘%’ 字符。

time.strftime()

使用strftime()函数可以将struct_time转换为自定义格式的时间字符串,第1个参数是格式化方法,第2个参数是struct_time:

print('自定义格式化')

c=time.localtime()

print(time.strftime("%Y-%m-%d-%H:%M:%S", c))

print(time.strftime("%Y,%m,%d %H:%M:%S", c))

==========结果:

自定义格式化

2020-07-10-22:25:29

2020,07,10 22:25:29

time.strptime()

使用strftime()函数可以将自定义格式的时间字符串转换为struct_time,第1个参数是格式化字符串,第2个参数是格式化方法:

print('格式化时间转struct_time')

x='2019-01-02-22:20:33'

s=time.strptime(x,'%Y-%m-%d-%H:%M:%S')

print(s)

x='2019,01,02 22:20:33'

s=time.strptime(x,'%Y,%m,%d %H:%M:%S')

print(s)

==========结果:

time.struct_time(tm_year=2019, tm_mon=1, tm_mday=2, tm_hour=22, tm_min=20, tm_sec=33, tm_wday=2, tm_yday=2, tm_isdst=-1)

time.struct_time(tm_year=2019, tm_mon=1, tm_mday=2, tm_hour=22, tm_min=20, tm_sec=33, tm_wday=2, tm_yday=2, tm_isdst=-1)

2 datetime

2.1获取当前时间 datetime.now()

获取本地时间,精确到微秒。

import datetime

now = datetime.datetime.now()#系统当前时间

print('datetime.datetime:',datetime.datetime)

print('datetime.datetime.now():',now)

==========结果:

datetime.datetime:

datetime.datetime.now(): 2020-07-21 21:37:33.407732

2.2 获取datetime数据的日期和时分秒:date(),time()

import datetime

now = datetime.datetime.now()#系统当前时间

print('datetime.datetime:',datetime.datetime)

print('datetime.datetime.now():',now)

print('datetime.datetime.date():',now.date())#当前时间的日期

print('datetime.datetime.time():',now.time())#当前时间的时分秒

==========结果:

datetime.datetime:

datetime.datetime.now(): 2020-07-21 21:37:33.407732

datetime.datetime.date(): 2020-07-21

datetime.datetime.time(): 21:37:33.407732

2.3 转换为时间字符串: ctime(),strftime()

datetime.strftime()使用的字符串格式指令参照 time.strftime()。

import datetime

now = datetime.datetime.now()#系统当前时间

print('datetime.datetime.ctime():',now.ctime())#转化成标准格式时间字符串

print('datetime.datetime.strftime():',now.strftime('%Y-%m-%d-%H:%M:%S'))#转换为自定义格式时间字符串

==========结果:

datetime.datetime.date(): 2020-07-21

datetime.datetime.time(): 21:37:33.407732

2.4 时间字符串转换为datetime类型:strptime()

datetime.strptime()使用的字符串格式指令参照time.strptime()。

import datetime

tm = datetime.datetime.strptime('2020-1-20-14-42-36','%Y-%m-%d-%H-%M-%S')

print('type of tm:',type(tm))

print('datetime.datetime.strptime():',tm)

==========结果:

type of tm:

datetime.datetime.strptime(): 2020-01-20 14:42:36

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值