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

news2025/4/17 16:46:09

文章目录

      • 前言
      • 一、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 datetime

d = 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 datetime

t = 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 datetime

t = 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 datetime

dt = 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 datetime

dt = 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 datetime

dt = 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 datetime

s = '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 datetime

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

在这里插入图片描述

timedelta对象的seconds属性表示秒数

import datetime

t1 = 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 datetime

t1 = 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 datetime

t1 = 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 datetime

dt_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 datetime

dt = 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 datetime

d_today = datetime.date.today()

print(d_today)  # 2023-05-11

在这里插入图片描述

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

# datetime.datetime.combine(date, time)

import datetime

d = 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 datetime

d1 = datetime.date(2023, 5, 1)
d2 = datetime.date(2023, 5, 11)
delta = d2 - d1

print(delta.days)  # 10

在这里插入图片描述

# 获取当前时间并格式化输出
import datetime

now = datetime.datetime.now()
s = now.strftime('%Y-%m-%d %H:%M:%S')

print(s) # 2023-05-11 10:00:00

在这里插入图片描述

# 将一个字符串解析为datetime对象
import datetime

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

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

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

相关文章

通过命令行配置调整KVM的虚拟网络

正文共:1234 字 20 图,预估阅读时间:2 分钟 在上篇文章中(最小化安装的CentOS7部署KVM虚拟机),我们介绍了如何在最小化安装的CentOS 7系统中部署KVM组件和相关软件包。因为没有GUI图形界面,我们…

【Java Web】XML格式文件

目录 一、XML是什么 二、常见配置文件类型 *.properties类型: *.xml类型: 三、DOM4J读取xml配置文件 3.1 DOM4J的使用步骤 3.2 DOM4J的API介绍 一、XML是什么 XML即可扩展的标记语言,由标记语言可知其基本语法和HTML一样都是由标签构成的文件…

深度之眼(二十六)——神经网络基础知识(一)

文章目录 一、前言二、神经网络与多层感知机2.1 人工神经元2.2 人工神经网络2.3 多层感知机2.4 激活函数 一、前言 看了下课程安排,自己还是没安排好,刚刚捋清了一下思路。 基础:python、数理 认识:神经网络基础、opencv基础、py…

一探究竟:板式家具生产线如何实现精细加工?

随着科技的进步,板式家具行业正经历着一场由传统手工加工向自动化、智能化生产的转变。板式家具生产线如何实现精细加工,已成为行业内关注的焦点。那么,一条完整的板式家具生产线如何实现精细加工的呢?本文将深入探讨。 板式家具生…

直流电机双闭环调速Simulink仿真

直流电机参数: 仿真模型算法介绍: 1)三相整流桥,采用半控功率器件SCR晶闸管; 2)采用转速环、电流环 双闭环控制算法; 3)外环-转速环,采用PI 比例积分控制;…

vue3 层级选择器 el-cascader展示 更多的信息

cascader 正常情况下可以满足我们所需&#xff0c;一般展示的就是 {label:‘’ &#xff1b;value:‘’} 但有时候需要展示更多的信息工用户查看&#xff0c;如下图。此时就需要我们进行一定的改造。 代码如下&#xff1a; <el-form-item label"相关人员"><…

240626_昇思学习打卡-Day8-稀疏矩阵

240626_昇思学习打卡-Day8-稀疏矩阵 稀疏矩阵 在一些应用场景中&#xff0c;比如训练二值化图像分割时&#xff0c;图像的特征是稀疏的&#xff0c;使用一堆0和极个别的1表示这些特征即费事又难看&#xff0c;此时就可以使用稀疏矩阵。通过参考大佬博文&#xff0c;结合个人理…

第十八课,函数基本语法规则

一&#xff0c;编程中函数的介绍 函数像一个黑盒子、加工厂、榨汁机等等&#xff08;你能想到的任何类似的比喻&#xff09;&#xff0c;它会经过一个固定的规则将你送入其中的参数变成另一个样子、或者实现某种预想的功能&#xff08;比如print()函数、input()函数、以及在tu…

npm-check【实用教程】升级项目中的依赖

安装 npm-check npm i -g npm-check检查项目中的依赖 npm-check会显示项目中没有使用&#xff0c;以及有新版本的依赖 升级项目中的依赖 npm-check -u方向键上下可以移动图中左侧的箭头空格键可选中/取消选中标注为 Major Update 和 Non-semver 类的版本&#xff0c;需去官网查…

对抗生成网络GANP52-

1.对抗生成网络的重点&#xff1a;有原始的输入&#xff0c;按照需求&#xff0c;生成新的数据。 eg1:超分辨率重构(首先先告诉神经网络什么是低分辨率&#xff0c;什么是高分辨率&#xff0c;让计算机学习两者的联系。 eg2:警察抓小偷的时候&#xff0c;由于录像太过模糊&…

STM32 HAL库里 串口中断回调函数是在怎么被调用的?

跟着正点原子学习的HAL库写串口接收程序的时候一直有困惑&#xff0c;使用HAL_UART_Receive_IT开启接收中断后&#xff0c;为啥处理函数要写在HAL_UART_RxCpltCallback里&#xff0c;中断发生的时候是怎么到这个回调函数里去的&#xff1f; void MX_USART1_UART_Init(void) {h…

three.js基础环境搭建

three.js three.js介绍安装threejs文件资源目录介绍本地静态服务器vscode配置live-server插件nodejs配置本地静态服务器项目的开发环境引入threejs 基础知识右手坐标系程序结构 three.js介绍 three.js官网 Three.js是一款基于WebGL的JavaScript 3D库&#xff0c;它使得开发者能…

【PythonWeb开发】Flask自定义模板路径和静态资源路径

在大型的 Flask 项目中&#xff0c;确实可能会有多个子应用&#xff08;Blueprints&#xff09;&#xff0c;每个子应用可能都有自己的静态文件和模板。为了更好地管理和组织这些资源&#xff0c;可以使用static_folder 和template_folder 属性来统一管理。必须同时设置好主应用…

jenkins nginx自动化部署 php项目

在当今快速发展的IT领域&#xff0c;自动化部署已成为提高工作效率和减少错误的关键。Jenkins作为持续集成/持续部署&#xff08;CI/CD&#xff09;的佼佼者&#xff0c;结合Docker容器技术和PHP编程语言&#xff0c;以及Ansible自动化工具&#xff0c;可以实现高效、可靠的自动…

PHP 界的扛把子 Swoole 异步通信利器

大家好&#xff0c;我是码农先森。 引言 我今天主要介绍的内容是包括但不仅限于 Swoole &#xff0c;也有一部分 Go 语言的内容。 为什么要介绍 Swoole ? 先说一说背景吧&#xff0c;我们项目组之前要为《香港 01》开发一个积分系统的项目&#xff0c;这个系统的主要功能包…

Spring Boot整合RocketMQ实现延迟消息消费

导包 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.0.3</version></dependency>添加配置信息 application配置文件 # rocketMq地址 rocketmq.name…

open()函数——打开文件并返回文件对象

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 open()函数用于打开文件&#xff0c;返回一个文件读写对象&#xff0c;然后可以对文件进行相应读写操作。 语法参考 open()函数的语法格式如下&…

Day 34:2368. 受限条件下可到达节点的数目

Leetcode 2368. 受限条件下可到达节点的数目 现有一棵由 n 个节点组成的无向树&#xff0c;节点编号从 0 到 n - 1 &#xff0c;共有 n - 1 条边。 给你一个二维整数数组 edges &#xff0c;长度为 n - 1 &#xff0c;其中 edges[i] [ai, bi] 表示树中节点 ai 和 bi 之间存在一…

深度学习31-33

1.负采样方案 &#xff08;1&#xff09;为0是负样本&#xff0c;负样本是认为构造出来的。正样本是有上下文关系 负采样的target是1&#xff0c;说明output word 在input word之后。 2.简介与安装 &#xff08;1&#xff09;caffe:比较经常用于图像识别&#xff0c;有卷积网…