Python datetime库

datetime库

本节目标:通过datetime库学习时间相关的数据类型。能进行时间运算

本节内容:datetime,time
本节技术点:时间的处理

本节阅读需要(5)min。
本节实操需要(10)min。

so easy



一、datetime的数据结构

既然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对照表

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

演技拉满的白马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值