当前位置: 首页 > news >正文

【Python datetime模块精讲】:时间旅行者的日志,精准操控日期与时间

文章目录

      • 前言
      • 一、datetime模块简介
      • 二、常用类和方法
      • 三、date类
      • 四、time类
      • 五、datetime类
      • 六、timedelta类
      • 七、常用的函数和属性
      • 八、代码及其演示

在这里插入图片描述

前言

Python的datetime模块提供了日期和时间的类,用于处理日期和时间的算术运算。这个模块包括date、time、datetime和timedelta等类,以及tzinfo接口和timezone类。date类用于表示年、月、日,而time类表示时间。datetime类结合了日期和时间,提供了一个单一的日期时间对象。timedelta类用于表示两个日期或时间之间的差异。此外,tzinfo接口允许用户定义时区信息,而timezone类提供了时区的实现。datetime模块广泛用于需要日期和时间计算的应用程序,如日志记录、调度和数据时间戳。它的强大功能和灵活性使其成为Python标准库中不可或缺的一部分。

一、datetime模块简介

datetime模块是Python标准库中处理日期和时间的常用模块之一。它提供了日期和时间的表示、比较和运算方法,以及常见的格式化和解析函数。

二、常用类和方法

# datetime模块提供了许多有用的类和方法,下面是其中一些常用的:# 导入datetime模块
import datetime
类或方法描述
datetime.date表示一个具体的日期,包括年份、月份和日数
datetime.time表示一个具体的时间,包括小时、分钟、秒和微秒
datetime.datetime表示一个具体的日期和时间,包括日期和时间的所有信息
datetime.timedelta表示两个日期或时间之间的差距
datetime.datetime.today() / datetime.datetime.now()返回表示当前日期和时间的对象
datetime.datetime.fromtimestamp(ts)将时间戳转换为datetime对象
datetime.datetime.strftime(format) / datetime.datetime.strptime(date_string, format)将datetime对象格式化为字符串,或将字符串解析为datetime对象

时间格式化符号

格式描述注释
%Y2021
%y21
%m
%d
%H24小时制(晚上九点:21:00)
%I12小时制(晚上九点:9:00)
%M
%S
%p上午AM 下午 PM

三、date类

# date类表示一个具体的日期,其中包括以下属性:
属性描述
year年份
month月份
day日数
weekday()返回星期几(0表示星期一,6表示星期日)
isoweekday()返回ISO规定的星期几(1表示星期一,7表示星期日)
isocalendar()返回一个元组,其中包含年份、周数和星期几
strftime(format)将date对象格式化为字符串
# 创建一个date对象:
d = datetime.date(year, month, day)
d = datetime.date(2023, 5, 11)
  • year属性表示日期对象的年份
  • month属性表示日期对象的月份
  • day属性表示日期对象的日数
  • isoweekday()方法返回ISO规定的星期几,其中1表示星期一,7表示星期日。
  • weekday()方法返回星期几,其中0表示星期一,6表示星期日。
  • isocalendar()方法返回一个元组,其中包含年份、周数和星期几。
import datetimed = datetime.date(2023, 5, 11)
print(d.year) # 2023
print(d.month) # 5
print(d.day) # 11
print(d.isoweekday()) # 4
print(d.weekday()) # 3
print(d.isocalendar()) # (2023, 19, 4)

在这里插入图片描述

strftime()方法将date对象格式化为字符串。format参数是一个格式化字符串,其中包含特定的代码,代表日期和时间的不同部分。

import datetime d = datetime.date(2023, 5, 11)
s = d.strftime('%Y-%m-%d')
print(s)  # 2023-05-11

在这里插入图片描述

四、time类

# time类表示一个具体的时间,其中包括以下属性:
属性描述
hour小时
minute分钟
second
microsecond微秒
strftime(format)将time对象格式化为字符串
# 创建一个time对象:
t = datetime.time(hour=0, minute=0, second=0, microsecond=0)
t = datetime.time(10, 0)
  • hour属性表示时间对象的小时数
  • minute属性表示时间对象的分钟数
  • second属性表示时间对象的秒数
  • microsecond属性表示时间对象的微秒数
import datetimet = datetime.time(10, 30, 15, 500000)
print(t.hour)  # 10
print(t.minute) # 30
print(t.second)  # 15
print(t.microsecond)  # 500000

在这里插入图片描述

# strftime()方法将time对象格式化为字符串。format参数是一个格式化字符串,其中包含特定的代码,代表日期和时间的不同部分。import datetimet = datetime.time(10, 30, 15)
s = t.strftime('%H:%M:%S')
print(s)  # 10:30:15

在这里插入图片描述

五、datetime类

# datetime类表示一个具体的日期和时间,其中包括以下属性:
属性描述
year年份
month月份
day日数
hour小时
minute分钟
second
microsecond微秒
timestamp()返回时间戳(自1970年以来的秒数)
weekday()返回星期几(0表示星期一,6表示星期日)
isoweekday()返回ISO规定的星期几(1表示星期一,7表示星期日)
isocalendar()返回一个元组,其中包含年份、周数和星期几
strftime(format)将datetime对象格式化为字符串
#v创建datetime对象
dt = datetime.datetime(year, month, day[, hour[, minute[, second[, microsecond]]]])
dt = datetime.datetime(2023, 5, 11, 10, 0)
  • year属性表示日期时间对象的年份
  • month属性表示日期时间对象的月份
  • day属性表示日期时间对象的日数
  • hour属性表示日期时间对象的小时数
  • minute属性表示日期时间对象的分钟数
  • second属性表示日期时间对象的秒数
  • microsecond属性表示日期时间对象的微秒数
import datetimedt = datetime.datetime(2023, 5, 11, 10, 30, 15, 500000)
print(dt.year)  # 2023
print(dt.month) # 5
print(dt.day) # 11
print(dt.hour) # 10
print(dt.minute) # 30
print(dt.second) # 15
print(dt.microsecond) # 500000

在这里插入图片描述

  • timestamp()方法返回自1970年1月1日以来的秒数
  • weekday()方法返回星期几,其中0表示星期一,6表示星期日。
  • isoweekday()方法返回ISO规定的星期几,其中1表示星期一,7表示星期日
  • isocalendar()方法返回一个元组,其中包含年份、周数和星期几。
import datetimedt = datetime.datetime(2023, 5, 11, 10, 30, 15)print(dt.timestamp() ) # 1686790215.0
print(dt.weekday()) # 3
print(dt.isoweekday()) # 4
print(dt.isocalendar()) # (2023, 19, 4)

在这里插入图片描述

strftime()方法将datetime对象格式化为字符串。format参数是一个格式化字符串,其中包含特定的代码,代表日期和时间的不同部分。

import datetimedt = datetime.datetime(2023, 5, 11, 10, 30, 15)
s = dt.strftime('%Y-%m-%d %H:%M:%S')
print(s) # 2023-05-11 10:30:15

在这里插入图片描述

strptime()方法是将字符串转换为datetime对象的方法。它根据特定的格式化代码将字符串解析为datetime对象。

import datetimes = '2023-05-11 10:30:15'
dt = datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
print(dt)  # 2023-05-11 10:30:15

在这里插入图片描述

六、timedelta类

# timedelta类表示两个日期或时间之间的差距,它支持以下属性:
属性描述
days天数
seconds秒数
microseconds微秒数
total_seconds()返回总秒数
# 创建一个timedelta对象:
delta = datetime.timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
delta = datetime.timedelta(days=10)

timedelta对象的days属性表示天数

import datetimed1 = datetime.date(2023, 5, 11)
d2 = datetime.date(2023, 5, 1)
delta = d1 - d2
print(delta.days) # 10

在这里插入图片描述

timedelta对象的seconds属性表示秒数

import datetimet1 = datetime.datetime(2023, 5, 11, 10, 30, 15)
t2 = datetime.datetime(2023, 5, 11, 10, 0, 0)
delta = t1 - t2
print(delta.seconds)  # 1815
# timedelta对象的microseconds属性表示微秒数import datetimet1 = datetime.datetime(2023, 5, 11, 10, 30, 15, 500000)
t2 = datetime.datetime(2023, 5, 11, 10, 30, 15)
delta = t1 - t2
print(delta.microseconds)  # 500000
# total_seconds()方法返回总秒数import datetimet1 = datetime.datetime(2023, 5, 11, 10, 30, 15)
t2 = datetime.datetime(2023, 5, 8, 10, 0, 0)
delta = t1 - t2
print(delta)  # 3 days, 0:30:15
print(delta.seconds)  # 1815
print(delta.total_seconds())  # 261015.0

七、常用的函数和属性

# datetime模块还提供了一些其他有用的函数和属性,下面是其中一些常用的:
函数或属性描述
datetime.datetime.today() / datetime.datetime.now()返回表示当前日期和时间的对象
datetime.datetime.fromtimestamp(ts)将时间戳转换为datetime对象
datetime.datetime.astimezone(tz=None)返回带有时区信息的datetime对象
datetime.datetime.utcoffset()返回一个datetime对象相对于UTC的偏移量
datetime.date.today()返回表示当前日期的date对象
datetime.datetime.combine(date, time)将一个date对象和一个time对象组合成一个datetime对象
# datetime.datetime.today() / datetime.datetime.now()
# 这两个方法都返回表示当前日期和时间的datetime对象。import datetimedt_now = datetime.datetime.now()
dt_today = datetime.datetime.today()print(dt_now)
print(dt_today)# 2023-05-11 15:30:15.123456
# 2023-05-11 15:30:15.123456"""
它们的区别在于,today()方法不接受任何参数,而now()方法可以接受一个可选参数,用于指定时区。如果不指定,则默认使用系统本地时区。
"""

fromtimestamp()方法将时间戳转换为datetime对象。

# datetime.datetime.fromtimestamp(ts)import datetime# ts1 = datetime.datetime.now()
# ts = datetime.datetime.now().timestamp()
# print(ts1)
# print(ts)ts = 1686790215.0 # 时间戳
dt = datetime.datetime.fromtimestamp(ts)print(dt)  # 2023-05-12 02:30:15

astimezone()方法返回带有时区信息的datetime对象,如果tz参数未提供,则默认使用系统本地时区。

# datetime.datetime.astimezone(tz=None)import datetimedt = datetime.datetime(2023, 5, 11, 10, 30, 15)# 将时区从本地修改为UTC+8
tzinfo = datetime.timezone(datetime.timedelta(hours=8))
dt2 = dt.astimezone(tz=tzinfo)print(dt2)  # 2023-05-11 18:30:15+08:00

在这里插入图片描述

utcoffset()方法是datetime模块中tzinfo类的一个方法,用于返回一个timedelta对象,表示当前时区相对于协调世界时(UTC)的偏移量。这个方法通常在处理时区相关的日期和时间时使用。

# datetime.datetime.utcoffset()
# utcoffset()方法返回一个datetime对象相对于UTC的偏移量。import datetime
dt = datetime.datetime(2023, 5, 11, 10, 30, 15).astimezone()
print(dt.utcoffset())  # 8:00:00

在这里插入图片描述

date.today()方法用于获取当前日期。这个方法不需要任何参数,并返回一个date对象,表示当前的年、月、日。

# datetime.date.today()
# today()方法返回表示当前日期的date对象。
import datetimed_today = datetime.date.today()print(d_today)  # 2023-05-11

在这里插入图片描述

combine()方法将一个date对象和一个time对象组合成一个datetime对象。

# datetime.datetime.combine(date, time)import datetimed = datetime.date(2023, 5, 11)
t = datetime.time(10, 30, 15)
dt = datetime.datetime.combine(d, t)print(dt)  # 2023-05-11 10:30:15

在这里插入图片描述

八、代码及其演示

# 计算两个日期之间的天数差距
import datetimed1 = datetime.date(2023, 5, 1)
d2 = datetime.date(2023, 5, 11)
delta = d2 - d1print(delta.days)  # 10

在这里插入图片描述

# 获取当前时间并格式化输出
import datetimenow = datetime.datetime.now()
s = now.strftime('%Y-%m-%d %H:%M:%S')print(s) # 2023-05-11 10:00:00

在这里插入图片描述

# 将一个字符串解析为datetime对象
import datetimes = '2023-05-11 10:00:00'
dt = datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S')print(dt)  # 2023-05-11 10:00:00

在这里插入图片描述

# datetime模块提供了一组强大的工具来处理日期和时间相关的问题,包括日期、时间、日期时间、时间差和格式化等。学会了使用这些工具,我们就可以方便地进行日期和时间相关的计算、比较和格式化,从而使程序更具可读性和可维护性。

相关文章:

【Python datetime模块精讲】:时间旅行者的日志,精准操控日期与时间

文章目录 前言一、datetime模块简介二、常用类和方法三、date类四、time类五、datetime类六、timedelta类七、常用的函数和属性八、代码及其演示 前言 Python的datetime模块提供了日期和时间的类,用于处理日期和时间的算术运算。这个模块包括date、time、datetime和…...

keepalived 服务高可用(简约版)

本文基于centos 7记述如何使用keepalived 背景 为生产环境准备一台备机是极其必要的,防止主机宕掉无服务可用的情况出现。但是同一局域网内每台主机都分配了一个唯一IP,这些IP既然相互不同,那么服务请求的时候岂不是要切换IP地址&#xff1f…...

【前端】Vue项目和微信小程序生成二维码和条形码

前言:哈喽,大家好,我是前端菜鸟的自我修养!今天给大家分享Vue项目和微信小程序如何生成二维码和条形码,介绍了JsBarcode、wxbarcode等插件,并提供具体代码帮助大家深入理解,彻底掌握&#xff01…...

同时使用接口文档swagger和knife4j

项目场景: springboot项目中同时使用接口文档swagger和knife4j 问题描述 在实体类中设置了字段必填的属性,在访问接口文档时出现异常 实体类关键代码片段 /*** 部门表 sys_dept*/ public class SysDept extends BaseEntity {private static final lo…...

Compose - 权限申请

官方介绍 一、概念 二、使用 Accompanist Permissions 官方介绍 不同版本中,权限状态(如PermissionState)中获取属性的方法不同,例如在“0.23.1”中,通过 PermissionState.hasPermission 属性拿到是否通过的 Boole…...

第十九条:要么为继承而设计并提供文档说明,要么就禁止继承

在前面一条中,我们已经知道了David写了A类被Tom拿去继承了,导致了A类的封装性遭到了破坏,那么有没有可能做点事情避免此事发生呢?第十九条孕育而生!David在创建A类的时候写上文档说明,说Al类不允许任何类来…...

Node.js全栈指南:浏览器显示一个网页

上一章,我们了解到,如何通过第二章的极简 Web 的例子来演示如何查看官方文档。为什么要把查阅官方文档放在前面的章节说明呢?因为查看文档是一个很重要的能力,就跟查字典一样。 回想一下,我们读小学,初中的…...

Linux远程桌面(Ubuntu/Deepin)——安装和使用 VNC 及通过 noVNC 实现浏览器实现远程桌面访问教程

在 Linux 上安装和使用 VNC 及通过 noVNC 实现浏览器远程访问教程 Windows上通常会自带xrdp远程桌面,但是当我们使用 Deepin 或 Ubuntu 系统作为开发机器且需要图形化界面的时候,就需要安装和配置 VNC(Virtual Network Computing&#xff09…...

2024年最新通信安全员考试题库

61.架设架空光缆,可使用吊板作业的情况是()。 A.在2.2/7规格的电杆与墙壁之间的吊线上,吊线高度5m B.在2.2/7规格的墙壁与墙壁之间的吊线上,吊线高度6m C.在2.2/7规格的电杆与电杆之间的吊线上,吊线高度…...

SpringMVC系列八: 手动实现SpringMVC底层机制-下

手动实现SpringMVC底层机制-下 实现任务阶段五🍍完成Spring容器对象的自动装配-Autowired 实现任务阶段六🍍完成控制器方法获取参数-RequestParam1.🥦将 方法的 HttpServletRequest 和 HttpServletResponse 参数封装到数组, 进行反射调用2.&a…...

【昇思初学入门】第八天打卡-模型保存与加载

模型保存与加载 学习心得 保存 CheckPoint 格式文件,在模型训练过程中,可以添加检查点(CheckPoint)用于保存模型的参数,以便进行推理及再训练使用。如果想继续在不同硬件平台上做推理,可通过网络和CheckPoint格式文件生成对应的…...

喜报!极限科技新获得一项国家发明专利授权:“搜索数据库的正排索引处理方法、装置、介质和设备”

近日,极限数据(北京)科技有限公司(简称:极限科技)新获得一项国家发明专利授权,专利名为 “搜索数据库的正排索引处理方法、装置、介质和设备”,专利号:ZL 2024 1 0479400…...

深入探讨:UART与USART在单片机中串口的实际应用与实现技巧

单片机(Microcontroller Unit, MCU)是一种集成了处理器、存储器和输入输出接口的微型计算机。它广泛应用于嵌入式系统中,用于控制各类电子设备。UART和USART是单片机中常见的通信接口,负责串行数据传输。下面我们详细介绍它们在单…...

Windows上PyTorch3D安装踩坑记录

直入正题,打开命令行,直接通过 pip 安装 PyTorch3D : (python11) F:\study\2021-07\python>pip install pytorch3d Looking in indexes: http://mirrors.aliyun.com/pypi/simple/ ERROR: Could not find a version that satisfies the requirement p…...

操作符详解(上) (C语言)

操作符详解(上) 一. 进制转换1. 二进制2. 二进制的转换 二. 原码 补码 反码三. 操作符的分类四. 结构成员访问操作符1. 结构体的声明2. 结构体成员访问操作符 一. 进制转换 1. 二进制 在学习操作符之前,我们先了解一些2进制、8进制、10进制…...

使用 audit2allow 工具添加SELinux权限的方法

1. audit2allow工具的使用 audit2allow 命令的作用是分析日志,并提供允许的建议规则或拒绝的建议规则。 1.1 audit2allow的安装 sudo apt-get install policycoreutilssudo apt install policycoreutils-python-utils 1.2 auditallow的命令 命令含义用法-v--ve…...

一文弄懂FPGA

一、FPGA简介 什么是FPGA? FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,可以在现场通过硬件描述语言(HDL)进行配置。它具有高度的灵活性和并行处理能力,广泛应用于通信、计算、…...

Rust 中使用 :: 这种语法的几种情况

文章目录 1. 访问模块成员:2. 访问关联函数或静态方法:3. 访问 trait 的关联类型或关联常量4. 指定泛型类型参数 1. 访问模块成员: mod utils {pub fn do_something() { /* ... */ } }let result utils::do_something();2. 访问关联函数或静…...

Ruby langchainrb gem and custom configuration for the model setup

题意:Ruby 的 langchainrb gem 以及针对模型设置的自定义配置 问题背景: I am working in a prototype using the gem langchainrb. I am using the module assistant module to implemente a basic RAG architecture. 我正在使用 langchainrb 这个 ge…...

高校新生如何选择最优手机流量卡?

一年一度的高考已经结束了,愿广大学子金榜题名,家长们都给孩子准备好了手机,那么手机流量卡应该如何选择呢? 高校新生在选择手机流量卡时,需要综合考量流量套餐、费用、网络覆盖、售后服务等多方面因素,以下…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子&#xff08…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...