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, timedeltaone_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 datetimenow = 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类(中间有用到没有单独记)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/861531.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【SSM】医疗健康平台-管理端-运营数据报表导出

知识目标 熟悉JasperReports的用法&#xff0c;能够使用JasperReports实现PDF文件导出 掌握Excel方式导出运营数据报表的方法&#xff0c;能够使用Apache POI以Excel方式导出运营数据报表 掌握PDF方式导出运营数据报表的方法&#xff0c;能够使用JasperReports以PDF方式导出运…

Linux基础 - iptables 与 firewalld 防火墙

目录 零. 简介 一. iptables 二. firewalld 三. 总结 零. 简介 iptables iptables 是 Linux 内核中集成的一种基于命令行的防火墙工具。它通过一系列规则来控制网络数据包的流动&#xff0c;包括允许、拒绝、修改数据包等操作。iptables 可以对入站、出站和转发的数据包进…

Arcgis 计算经纬度坐标并补齐6位小数

工作中我们经常需要在Arcgis中计算点的经纬度或者线的起点、终点坐标&#xff0c;为确保数据的准确性&#xff0c;我们必须保留6位小数&#xff0c;但我们在默认计算的时候偶尔会遇到算出来的经纬度坐标小数位不足6位&#xff0c;那我们应该如何补齐呢&#xff0c;这里我将方法…

结构冒险,控制冒险,数据冒险实例分析

目录 1.结构冒险&#xff1a; 2.数据冒险&#xff1a; 3.控制冒险&#xff1a; 指令执行过程&#xff1a; 取指(IF)&#xff1a;从指令存储器或 Cache 中取指令。 译码/读寄存器(ID)&#xff1a;操作控制器对指令进行译码&#xff0c;同时从寄存器堆中取操作数。 执行/计算地…

黑鹰优化算法(BEO)-2024年SCI新算法-公式原理详解与性能测评 Matlab代码免费获取

声明&#xff1a;文章是从本人公众号中复制而来&#xff0c;因此&#xff0c;想最新最快了解各类智能优化算法及其改进的朋友&#xff0c;可关注我的公众号&#xff1a;强盛机器学习&#xff0c;不定期会有很多免费代码分享~ 目录 原理简介 一、种群初始化 二、围捕行为 三…

centos上快速搭建zfile文件网站

什么是zfile&#xff1f; zfile文件网站是最方便快捷的在线目录展示程序&#xff0c;支持将本地文件、FTP、SFTP、S3、OneDrive 等存储在网站上展示并浏览&#xff01; 本教程参考&#xff1a; https://docs.zfile.vip/install/os-linux复现 今天的搭建环境是centos7.9 第一…

Spring Boot 整合 JSP

Spring Boot 是一个开源的 Java 框架&#xff0c;用于创建独立、生产级的基于 Spring 框架的应用程序。它简化了基于 Spring 的应用程序的创建和部署过程。JSP&#xff08;JavaServer Pages&#xff09;是一种动态网页技术&#xff0c;允许开发者在 HTML 中嵌入 Java 代码。将 …

CSS|03 尺寸样式属性文本与字体属性

尺寸样式属性 height:元素高度height的值&#xff1a;auto 自动length 使用px定义高度% 基于包含它的块级对象的百分比高度 width&#xff1a;元素的宽度width的值与height一样span标签可以设置宽度、高度吗&#xff1f; 答&#xff1a;不可以&#xff0c;因为span标签是一个行…

A-8 项目开源 qt1.0

A-8 2024/6/26 项目开源 由于大家有相关的需求&#xff0c;就创建一个项目来放置相关的代码和项目 欢迎交流&#xff0c;QQ&#xff1a;963385291 介绍 利用opencascade和vulkanscene实现stp模型的查看器打算公布好几个版本的代码放在不同的分支下&#xff0c;用qt实现&am…

科技赋能·创领未来丨智合同和百胜中国就Contract AI Studio项目达成合作

#智合同 #百胜中国 #AIGC #NLP #LLM #Contract AI Studio 近期&#xff0c;国内AIGC和LLM大语言模型发展可谓是如火如荼&#xff0c;其迅速崛起为社会和产业发展起到了非常重要的作用。人们利用AI技术&#xff08;AIGC、LLM大语言模型、NLP等&#xff09;将其赋能到企业生…

华为仓颉编程语言

目录 一、引言 二、仓颉编程语言概述 三、技术特征 四、应用场景 五、社区支持 六、结论与展望 一、引言 随着信息技术的快速发展&#xff0c;编程语言作为软件开发的核心工具&#xff0c;其重要性日益凸显。近年来&#xff0c;华为公司投入大量研发资源&#xff0c;成功…

记录待办事项的便签软件哪个好用?

在快节奏的现代生活中&#xff0c;我们经常需要处理各种各样的待办事项&#xff0c;为了更好地管理时间&#xff0c;许多人选择使用便签软件来记录自己的待办事项。那么&#xff0c;记录待办事项的便签软件哪个好用&#xff1f;市面上众多的便签软件中&#xff0c;哪一个才是最…

【C++题解】1715. 输出满足条件的整数5

问题&#xff1a;1715. 输出满足条件的整数5 类型&#xff1a;简单循环 题目描述&#xff1a; 有这样一个四位数,其千位和百位之和为偶数&#xff0c;十位和个位之和为奇数&#xff0c;且前两位之和大于后两位之和&#xff0c;且含有因数 8 &#xff0c;请输出满足上述条件的…

49-3 内网渗透 - MSI安 装策略提权

靶场环境搭建: 这里还是用我们之前的windows2012虚拟机进行搭建 1)打开一些设置让靶场存在漏洞 打开组策略编辑器(gpedit.msc) 使用运行命令打开: 按下 Win + R 组合键来打开运行对话框。输入 gpedit.msc,然后按下 Enter 键。使用搜索打开: 点击任务栏上的搜索框(W…

【Docker】安装和加速

目录 1.安装 2.了解 docker 信息 3.查询状态 4. 重新启动Docker 1.安装 yum install –y docker 2.了解 docker 信息 cat /etc/redhat-release 3.查询状态 systemctl status docker 4.支持 1.12 的 docker 镜像加速 sudo mkdir -p /etc/docker sudo tee /etc/docke…

Unity之Hololens2开发MRTK Profile详解

前言 配置 MRTK 的主要方式之一是使用基础包中的配置文件。 场景中的主要 MixedRealityToolkit 对象具有活动配置文件 - 一个 ScriptableObject。 顶级 MRTK 配置配置文件包含主核心系统的每个核心的子配置文件数据,每个主核心系统都旨在配置其相应子系统的行为。 此外,这些…

RK3568平台(音频篇)RT5651解码芯片Codec驱动分析

一.Audio Codec的必要性 在理想状况下&#xff0c;对于录音过程&#xff0c;只需要将麦克风获取到的analog信号通过ADC转换为digital信号并存储即可&#xff0c;对于播放音过程&#xff0c;只需要将digital信号通过DAC转换为analog并输出到speaker播放即可。 但在实际的过程中…

【学习】如何利用Python技术进行软件测试相关工作

Python是一种广泛使用的高级编程语言&#xff0c;它因其简洁的语法、强大的库支持和跨平台特性而受到开发者的喜爱。在软件测试领域&#xff0c;Python同样发挥着重要作用&#xff0c;它可以帮助测试人员编写自动化测试脚本、进行接口测试、性能测试、以及处理测试数据等。以下…

【Linux】进程信号_3

文章目录 八、进程信号2. 信号的保存3. 信号的处理 未完待续 八、进程信号 2. 信号的保存 实际执行信号的处理动作称为信号递达(Delivery) 信号从产生到递达之间的状态,称为信号未决(Pending)。 进程可以选择阻塞 (Block )某个信号。 被阻塞的信号产生时将保持在未决状态,直到…

华为开发者调试工具使用介绍(MDC)

MDC的开发过程的三大工具&#xff1a;MMC、MDS、Mind Studio&#xff0c;这三个工具完成了开发过程中的配置文件编写、代码编写以及AI模型的开发三个任务。除了开发&#xff0c;MDC还准备了两个调试工具&#xff0c;用于使用过程中数据的查看等。这一些调试工具分别对映射MDC中…