Python的内置库time

工作中经常需要对时间进行获取,处理和格式化,我们可以使用Python内置的time库来解决这些问题。

时间戳

时间戳,表示从1970年1月1日0点0分0秒到现在的时间经过了多少秒。

import time


cur_time = time.time()
print(cur_time)


# 等待
time.sleep(3)


# 检查等待前后过去的时间
now_time = time.time()
print(now_time)
go_time = now_time - cur_time
print('等待前后过去了:{}秒!'.format(go_time))

运行结果:

1600246971.3553054
1600246974.35551
等待前后过去了:3.000204563140869秒!

格式化

time.time()的结果是浮点数对象

格式化显示本地时间:

import time
'''
格式化当前时间 年-月-日 时:分:秒
%X表示本地时间
%Y表示年,%m表示月,%d表示日
'''
print(time.strftime("%Y-%m-%d %X"))

运行结果:

2020-09-16 17:11:04

更详细的显示本地时间:

import time
'''
格式化当前时间 年-月-日 时:分:秒 上下午 星期
'''
print(time.strftime("%Y-%m-%d %X %p %A"))

运行结果:

2020-09-16 17:13:21 PM Wednesday

结构化

time.localtime()的结果是struct_time对象

结构化时间对象的9个属性分别是年月日时分秒,本月第几周,本年第几天和夏令时。

import time


sct_time = time.localtime()
print(sct_time)


# 结构化表示当地时间
# 格式为:年-月-日 时:分:秒 本月几周 本年第几天 夏令时
print('{}-{}-{} {}:{}:{} 本月第{}周 本年第{}天 夏令时:{}'.format(sct_time.tm_year,sct_time.tm_mon,sct_time.tm_mday,sct_time.tm_hour,sct_time.tm_min,sct_time.tm_sec,sct_time.tm_wday,sct_time.tm_yday,sct_time.tm_isdst))

运行结果:

2020-9-16 17:36:12 本月第2周 本年第260天 夏令时:0

相互转换

结构化时间 --> 时间戳

import time


sct_time = time.localtime()
print('当前结构化时间:{}'.format(sct_time))
# struct2format   mktime
str_time = time.time()
print('当前时间戳:{}'.format(str_time))
print('转换后的时间戳:{}'.format(time.mktime(sct_time)))

运行结果:

当前结构化时间:time.struct_time(tm_year=2020, tm_mon=9, tm_mday=17, tm_hour=22, tm_min=37, tm_sec=25, tm_wday=3, tm_yday=261, tm_isdst=0)
当前时间戳:1600353445.3574238
转换后的时间戳:1600353445.0

时间戳 --> 结构化时间

import time


sct_time = time.localtime()
print('当前结构化时间:{}'.format(sct_time))
# struct2format   mktime
str_time = time.time()
print('当前时间戳:{}'.format(str_time))
print('转换后的结构化时间:{}'.format(time.gmtime(str_time)))
print((time.gmtime(str_time).tm_zone))
print('转换后的结构化时间:{}'.format(time.localtime(str_time)))

运行结果:

当前结构化时间:time.struct_time(tm_year=2020, tm_mon=9, tm_mday=17, tm_hour=22, tm_min=42, tm_sec=53, tm_wday=3, tm_yday=261, tm_isdst=0)
当前时间戳:1600353773.0630054
转换后的结构化时间:time.struct_time(tm_year=2020, tm_mon=9, tm_mday=17, tm_hour=14, tm_min=42, tm_sec=53, tm_wday=3, tm_yday=261, tm_isdst=0)
UTC
转换后的结构化时间:time.struct_time(tm_year=2020, tm_mon=9, tm_mday=17, tm_hour=22, tm_min=42, tm_sec=53, tm_wday=3, tm_yday=261, tm_isdst=0)

你应该已经注意到,时间戳转换结构化时间有两个方法gmtime和localtime,其中gmtime表示标准时间,而localtime是加了时区后的时间,所以当前localtime比gmtime快8小时,这就是+8区的原因。

简单的字符串时间获取方式:

print(time.ctime())    # 当前时间的字符串形式,相当于把当前结构化时间用asctime方法格式化
print(time.asctime(time.localtime()))

结果:

Thu Sep 17 22:48:48 2020
Thu Sep 17 22:48:48 2020

datetime模块

datetime是对time模块的封装, 用起来更加简单,方便。

以下介绍几种常用的方法:

import datetime


current_time = datetime.datetime.now()
print('time:',current_time)


utc_time = datetime.datetime.utcnow()
print('utc time:',utc_time)


current_day = datetime.datetime.today()
print('local time:',current_day)


print('今年是哪一年?答:',datetime.datetime.today().year)
print('今天属于那一月?答:',datetime.datetime.today().month)
print('今天是本月第几天?答:',datetime.datetime.today().day)
print('从0001年1月1日到今天过去了多少天?答:',datetime.datetime.today().toordinal())
print('今天是礼拜几?答:',datetime.datetime.today().isoweekday())

运行结果:

time: 2020-09-17 23:10:54.315267
utc time: 2020-09-17 15:10:54.315267
local time: 2020-09-17 23:10:54.316267
今年是哪一年?答:2020
今天属于那一月?答:9
今天是本月第几天?答:17
从0001年1月1日到今天过去了多少天?答:737685
今天是礼拜几?答:4

更多用法可以查看源码进行学习。

往期推荐

Python的@property

Python3速查手册分享给大家。

Python的封装继承多态和多重继承

好文!必须在看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值