Python学习笔记23:进阶篇(十二)常见标准库使用之日期时间功能datetime模块的学习使用

前言

本文是根据python官方教程中标准库模块的介绍,自己查询资料并整理,编写代码示例做出的学习笔记。

根据模块知识,一次讲解单个或者多个模块的内容。

教程链接:https://docs.python.org/zh-cn/3/tutorial/index.html

日期和时间

日期和时间的处理,可以说是很常见的业务了,覆盖各种产品的方方面面。

datetime

datetime模块是Python的标准库模块之一。这个模块提供了丰富且强大的功能来处理日期和时间,包括日期(date)、时间(time)、日期时间组合(datetime)、时间间隔(timedelta)以及时区信息(timezone)等类,支持日期和时间的创建、格式化、计算和比较等操作。

date

这个类只处理日期,不包含时间部分。

常用函数
  1. 构造函数。我们可以根据年月日直接创建一个任意日期的对象。
from datetime import date

# 创建一个日期
birthday= date(1996, 10, 3)
print("明月望秋思的生日是:",birthday)

在这里插入图片描述

  1. today函数。获取今天的日期。

today = date.today()
print(“今天是:”, today)

在这里插入图片描述

  1. 成员属性:获取年月日信息
# 获取成员属性
year, month, day = birthday.year, birthday.month, birthday.day
print(f"出生年份: {year}, 月份: {month}, 日: {day}")

在这里插入图片描述

  1. birthday.strftime格式化日期
# 格式化日期
formatted_birthday = birthday.strftime("%Y年%m月%d日")
print("格式化后的生日:", formatted_birthday)

在这里插入图片描述

  1. 比较日期大小

直接大于小于等于符号比较,特别方便。

# 比较日期大小
before_date = date(1996, 10, 1)
if birthday < before_date:
    print("生日在之前或同一天")
else:
    print("生日在之后")
after_date = date(1996, 10, 8)
if birthday < before_date:
    print("生日在之后或同一天")
else:
    print("生日在之前")
equal_date = date(1996, 10, 3)
if birthday == before_date:
    print("生日在同一天")
else:
    print("生日在之前或之后")

在这里插入图片描述

  1. 计算偏移日期
from datetime import date, timedelta

one_week_later = today+ timedelta(weeks=1)
print("一周后是:", one_week_later)

在这里插入图片描述

  1. 计算日期差值
another_date = date(2024, 7, 3)
delta = another_date - today
print("两日期间相差天数:", delta.days)

在这里插入图片描述
正好和日期偏移的对上。

ps: Java的日期差值就没办法这么一减就完事了。。。

  1. 特定日期属性

weekday = today.isoweekday() # Monday is 1 and Sunday is 7
print(“今天是这周的第”, weekday, “天”)

day_of_year = birthday.toordinal() - date(birthday.year, 1, 1).toordinal() + 1
print(“生日是一年中的第”, day_of_year, “天”)

在这里插入图片描述
这些函数,基本上能满足常见日期的业务要求,不能直接完成的也可以通过这些函数简介完成,无非就是循环组合使用。

time

time类用于表示一天中的时间(小时、分钟、秒、微秒),不包含任何日期信息。它主要用于处理时间的小时、分钟、秒和微秒部分。

  1. 构造函数: 指定时间创建对象。注意如果你不填入参数,创建出的时间是00:00:00
from datetime import time

# 12点34分56秒
t = time(12, 34, 56)
print(t)

在这里插入图片描述

  1. 成员属性:获取时分秒信息
t = time(12, 34, 56, 78)
hour, minute, second, microsecond = t.hour, t.minute, t.second, t.microsecond
print(f"小时: {hour}, 分钟: {minute}, 秒: {second}, 微秒: {microsecond}")

在这里插入图片描述

  1. 时间比较

也是大于小于等于比较就行,这里就只写一个小于的

t1 = time(14, 0)
t2 = time(15, 30)

if t1 < t2:
    print("t1在t2之前")
else:
    print("t1在t2之后或相同")

在这里插入图片描述

date类和time只能单独表示日期或单独表示时间,但是我们常见都是日期时间一起操作和使用,所以还有一个datetime。

datetime

datetime类是处理日期和时间最常用的类,它结合了date和time的功能,可以表示具体的日期和时间,包括年、月、日、时、分、秒和微秒,并支持时区。

  1. 获取当前日期和时间
from datetime import datetime

now = datetime.now()
print("当前日期和时间:", now)

在这里插入图片描述
通常在需要保存或者需要确定当前时间的时候使用。

  1. 指定日期和时间创建对象
dt = datetime(2024, 6, 26, 22, 0, 0)
print("指定日期时间:", dt)

在这里插入图片描述

  1. 成员属性:获取日期时间中的年月日时分秒等信息
year, month, day = dt.year, dt.month, dt.day
hour, minute, second, microsecond = dt.hour, dt.minute, dt.second, dt.microsecond
print(f"年: {year}, 月: {month}, 日: {day}, 时: {hour}, 分: {minute}, 秒: {second}, 微秒: {microsecond}")

在这里插入图片描述

  1. 格式化输出
formatted_dt = dt.strftime("%Y-%m-%d %H:%M:%S")
print("格式化日期时间:", formatted_dt)

在这里插入图片描述

  1. 日期偏移
    其实在date中用过,不过这里多了时间,但是时间是不会变得
one_day_later = dt + timedelta(days=1)
print("一天后:", one_day_later)

在这里插入图片描述

  1. 计算差值
    date中也用过,不过由于时间的存在,从时间开始计算差值。

another_dt = datetime(2024, 6, 27, 16, 0, 0)
delta = another_dt - dt
print(“时间差:”, delta)
在这里插入图片描述
大家计算一下,是不是正好查18个小时。

  1. 时区处理:datetime可以处理带时区的日期时间
utc_plus_8 = timezone(timedelta(hours=8))
dt_with_timezone = datetime.now(utc_plus_8)
print("带有时区的日期时间:", dt_with_timezone)

# 时区转换
utc_dt = dt_with_timezone.astimezone(timezone.utc)
print("转换到UTC时间:", utc_dt)

在这里插入图片描述
有些应用的默认时区不一定是东八区,就会导致我们获取到的日期时间不对,这个时候我们就可以转换时区。

  1. 特定日期属性
weekday = dt.isoweekday() 
print("星期几:", weekday)

day_of_year = dt.timetuple().tm_yday
print("一年中的第几天:", day_of_year)

在这里插入图片描述

  1. 时间戳转换

可以使得日期时间和时间戳互相转换。有很多时候我们需要日期时间,给的是时间戳。或者我们有日期时间但是需要提供给时间戳。常见的就是接口请求,参数是时间戳,我们只有日期时间。业务处理中获取到接口请求时间给的是时间戳我们要转成日期时间。

timestamp = dt.timestamp()
print("时间戳:", timestamp)
from_timestamp = datetime.fromtimestamp(timestamp)
print("从时间戳转换回来的日期时间:", from_timestamp) 

在这里插入图片描述

结尾

时间日期的相关功能是经常需要用到,因为日期时间的处理处处可见。不能跳过,要自己敲一遍。

作业

  1. 使用date类
  2. 使用time类
  3. 使用datetime类
  4. 使用timedelta类(中间有用到没有单独记)
  • 31
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值