datetime库
本节目标:通过datetime库学习时间相关的数据类型。能进行时间运算
本节内容:datetime,time 本节技术点:时间的处理
本节阅读需要(5)min。 本节实操需要(10)min。
so easy
文章目录
一、datetime的数据结构
- datetime库
- 一、datetime的数据结构
- date
- time
- datetime
- timedelta
- 二、常用的属性和方法
- 三、时间的格式化
- 总结
既然datetime是用来处理时间数据的,那么自然要存储时间数据的。 时间数据有不同的展现形式,比如,分,时,秒,天等。日期同样如此。 所以需要多样的数据结构。 time包比较基础,可以自行学习,另外功能datetime也能实现。所以略。
date类
time类
datetime类
timedelta类
date
from datetime import date
a = date(2019, 4, 13) # 自定义
print(a)
today = date.today() # 现在的日期
print("当前日期 =", today)
timestamp = date.fromtimestamp(1576244364) # 根据时间戳转化!
print("日期 =", timestamp)
Unix时间戳是特定日期到UTC的1970年1月1日之间的秒数。
time
from datetime import time
# time(hour = 0, minute = 0, second = 0)
a = time()
print("a =", a) # 相当于秒表
# time(hour, minute and second)
c = time(hour = 11, minute = 34, second = 56)
print("c =", c)
# time(hour, minute, second, microsecond)
d = time(11, 34, 56, 234566)
print("d =", d)
datetime
datetime模块有一个名为的dateclass类,顺序结合了date和time对象的信息。
# datetime(year, month, day, hour, minute, second, microsecond)
b = datetime(2019, 11, 28, 23, 55, 59, 342380)
print(b)
timedelta
代表的是时间的插值。用于时间的数值计算。相当于重载了加法!!!
from datetime import datetime, date
t1 = date(year = 2018, month = 7, day = 12)
t2 = date(year = 2017, month = 12, day = 23)
t3 = t1 - t2
print("t3 =", t3)
print("type of t3 =", type(t3))
注意timedelta是有正负的。
二、常用的属性和方法
聊一聊实操中的常见的属性和方法。
from datetime import date,datetime
today = date.today()
print("当前日期 =", today)
# 打印程序运行时间
def testRunTime():
start = datetime.now()
for i in range(1000):
for j in range(500):
m = i + j
print(m)
end = datetime.now()
print(end - start)
return
打印时间的可以写成装饰器。
def timer(func):
def call_func(*args, **kwargs):
print("计时开始")
start_time = datetime.now() # 或者换成time.time()
func(*args, **kwargs)
end_time = datetime.now()
total_time = end_time - start_time
print("计时结束")
print(f"程序用时{total_time.total_seconds()}")#一般程序比较快,用秒计数比较好。
return call_func
if __name__ == '__main__':
@timer
def test(second): # 测试函数
time.sleep(second)
test(5)
a = datetime(2019, 12, 28, 23, 55, 59, 342380)
print("年 =", a.year)
print("月 =", a.month)
print("日 =", a.day)
print("时 =", a.hour)
print("份 =", a.minute)
print("时间戳 =", a.timestamp()) # 相当于转化为统一的时间戳标准
t = timedelta(days = 5, hours = 1, seconds = 33, microseconds = 233423)
print("total seconds =", t.total_seconds()) # 时间转化为秒
三、时间的格式化
必须掌握常见的转化。
from datetime import datetime
# current date and time
now = datetime.now()
t = now.strftime("%H:%M:%S")
print("time:", t)
s1 = now.strftime("%m/%d/%Y, %H:%M:%S")
# mm/dd/YY H:M:S format
print("s1:", s1)
s2 = now.strftime("%d/%m/%Y, %H:%M:%S")
# dd/mm/YY H:M:S format
print("s2:", s2)
注意%m/%d/%Y, %H:%M:%S %m这些的含义是固定的,也就是说,相当于属性minute。 也就是格式字符串里面百分号内容不变,位置,连接符号自由定义。
具体的对照表百度。。。强调大小写格式,一般意义一致,但是格式不一致。
相当于上面过程的逆过程
from datetime import datetime
date_string = "21 June, 2018"
print("date_string =", date_string)
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object)
将一定形式的时间字符串读取到datetime数据类型中。 这样就可以数值处理了。
总结本节主要讲了datetime的数据类型。
尤其掌握datetime。
掌握读入和输出的函数strptime,strftime。
装饰器要留心形式。
延伸阅读:
strftime对照表