Python 的 datetime 模块
目录
简介
一、date类
(一)date 类属性
(二)date 类方法
(三)实例属性
(四)实例的方法
二、time类
(一)time 类属性
(二)time 实例属性
(三)实例方法
三、datetime类
(一)datetime 类属性
(二)datetime 类方法
(三)实例属性
(四)实例方法
四、timedelta类
(一)timedelta 类属性
(二)timedelta 实例属性
(三)timedelta 实例方法
用法
五、时间类型转换
(一)str 与 datetime 转换
1.str->datetime
2.datetime->str
(二)date/datetime与时间戳转换
1.时间戳->datetime
2.datetime->时间戳
(三)时间戳 timestamp 与字符串转换
1.时间戳->str
2.str->时间戳
简介
datetime 模块是对 time 模块的封装,这个模块提供了这几个类:date(日期)、time(时间)、datetime(日期时间,功能覆盖前两者)、timedelta(时间差)、tzinfo。文章用于记录模块的常用属性和方法(一些不太常用的可能不会涉及)
python 里表示时间的格式有三种:时间戳、元组、格式化时间。与time模块类似,datetime 模块也能够将 datetime 类型转换成这三种类型。需要注意的是,str 和时间戳的转换,都需要先转成 datetime,datetime 相当于时间处理的中间桥梁。
对于三种时间表示方式、时间计算标准及 time 模块的使用结合另一篇文章:python的time模块_python中的time模块_带带琪宝的博客-CSDN博客
一、date类
datetime.date(year,month,day) 表示年、月、日等日期
from datetime import date
import time
导包还出现了个报错:因为取的文件名和包名重复了Python报错“ImportError:most likely due to a circular import“记录_importerror: cannot import name 'datetime' from 'p-CSDN博客
(一)date 类属性
- date.min:该类对象所能表示的最早日期,date(MINYEAR, 1, 1)
print(date.min)
0001-01-01
- date.max:该类对象所能表示的最晚日期,date(MAXYEAR, 12, 31)
print(date.max)
9999-12-31
- date.resolution:该类对象表示日期的最小单位,在这里为 1 天,timedelta(days=1)
print(date.resolution)
1 day, 0:00:00
(二)date 类方法
- date.today():返回一个表示当前本地日期的 date 对象
day=date.today() # 返回当前格式化的年月日
print(day)
print(type(day)) # date类型2023-11-08
<class 'datetime.date'>
- date.fromtimestamp(timestamp):根据给定的时间戮,返回一个 date 对象,可用于时间转换
print(date.fromtimestamp(666666666))
1991-02-16
时间戳:格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数
- date.fromordinal(ordinal):将 Gregorian 日历时间转换为 date 对象(Gregorian Calendar:一种日历表示方法,类似于我国的农历,西方国家使用比较多)
(三)实例属性
date类的实例有年月日三个属性,即
- date.year:年,取值1~9999
- date.month:月,取值1~12
- date.day:日,取值取决于年和月
(四)实例的方法
常用的如下
day=date.today()
print(day.year) # 返回年份2023,也可返回月、日2023
print(day.replace(1999,4,26)) # 修改时间
1999-04-26
print(day.timetuple()) # 返回时间元组
time.struct_time(tm_year=2023, tm_mon=11, tm_mday=8, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=312, tm_isdst=-1)
print(day.weekday()) # 返回星期几(由0开始)
2print(day.isoweekday()) # 返回星期几(由1开始)
3
print(day.isoformat()) # 以'YYYY-MM-DD'形式字符串返回
2023-11-08

原自:python的datetime库使用详解_流光、月影的博客-CSDN博客
二、time类
time 对象表示一天中某时间
(一)time 类属性
- time.min:time 对象所能表示的最早时间,time(0, 0, 0, 0)
print(time.min)
00:00:00
- time.max:time 对象所能表示的最晚时间,time(23, 59, 59, 999999)
print(time.max)
23:59:59.999999
- time.resolution:time 对象表示时间的最小单位,这里为1微秒,timedelta(microseconds=1).
print(time.resolution)
0:00:00.000001
(二)time 实例属性
- time.hour:小时,取值0 ~ 23
- time.minute:分钟,取值0 ~ 59
- time.second:秒,取值0 ~ 59
- time.microsecond:微秒,取值0~999999
- time.tzinfo
datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None)
(三)实例方法
t=time(hour=20, minute=30, second=14, microsecond=6666, tzinfo=None)
print(time.isoformat(t)) # 返回格式化日期字符串,如 "HH:MM:SS.mmmmmm" 的字符串20:30:14.006666
三、datetime类
datetime.datetime() 表示日期和时间表示的类,是 date 对象和 time 对象的结合体,包含他们的所有信息,功能也覆盖 date 和 time 类
(一)datetime 类属性
- datetime.min:datetime 对象所能表示的最早时间,datetime(MINYEAR, 1, 1, tzinfo=None)
print(datetime.min)
0001-01-01 00:00:00
- datetime.max:datetime 对象所能表示的最晚日期,datetime(MAXYEAR, 12, 31, 23, 59, 59, 999999, tzinfo=None)
print(datetime.max)
9999-12-31 23:59:59.999999
- datetime.resolution:datetime 对象表示日期的最小单位,在这里是 1 毫秒,timedelta(microseconds=1)
print(datetime.resolution)
0:00:00.000001
(二)datetime 类方法
- datetime.today():返回表示当前本地时间的 datetime 对象,等价于datetime.fromtimestamp(time.time())
- datetime.now(tz=None):返回表示当前本地时间的 datetime 对象,参数 tz 为时区
- datetime.utcnow():返回一个当前 UTC 时间的 datetime 对象
print(datetime.today())
print(datetime.now())
print(datetime.utcnow())2023-11-09 17:47:16.834907
2023-11-09 17:47:16.835902
2023-11-09 09:47:16.835902
- datetime.fromtimestamp(timestamp, tz=None):根据时间戮创建一个 datetime 对象,参数 tz 指定时区信息
- datetime.utcfromtimestamp(timestamp):根据时间戮创建一个 UTC 时间的 datetime 对象
print(datetime.fromtimestamp(2222222222, tz=None))
print(datetime.utcfromtimestamp(2222222222))2040-06-02 11:57:02
2040-06-02 03:57:02
- datetime.combine(date, time):根据参数 date 和 time,创建一个 datetime 对象
- datetime.strptime(date_string, format):将格式化字符串转换为 datetime 对象
(三)实例属性
datetime (year, month, day, hour=0, minute=0,second=0, microsecond=0)
- year:指定的年份,MINYEAR(1) <= year <= MAXYEAR(9999)
- month:指定的月份,1 <= month <= 12
- day:指定的日期,1 <= day <=月份所对应的日期上限
- hour:指定的小时,0 <= hour < 24
- minute:指定的分钟数,0 <= minute < 60
- second:指定的秒数,0 <= second < 60
- microsecond:指定的微秒数,0 <= microsecond < 1000000
hour、minute、second、microsecond 参数可以全部或部分省略。
(四)实例方法
datetime 具有绝大多数 date 和 time的属性,参考上方 time 与 date 的实例方法
- datetime.date():返回对象的日期,即年月日
- datetime.time():返回对象的时间,即时分秒、微秒
dt=datetime (year=2023, month=12, day=25, hour=20, minute=30,second=15, microsecond=6666)
print(dt)
print(dt.date())
print(dt.time())2023-12-25 20:30:15.006666
2023-12-25
20:30:15.006666
四、timedelta类
timedelta 表示的是一个时间段,即两个日期 date 或者日期时间 datetime 之间的差,Python 中 pandas 与 datetime 的 timedelta 可以相互换算
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
(一)timedelta 类属性
- timedelta.min:timedelta 对象负值的极限,timedelta(-999999999)
print(timedelta.min)
-999999999 days, 0:00:00
- timedelta.max:timedelta 对象正值的极限,timedelta(days=999999999, hours=23, minutes=59, seconds=59, microseconds=999999)
print(timedelta.max)
999999999 days, 23:59:59.999999
- timedelta.resolution:两个 timedelta 不相等的对象之间最小的差值,即一微秒
print(timedelta.resolution)
0:00:00.000001
(二)timedelta 实例属性
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
timedelta 的实例属性有日期、秒、微秒,其他参数都是需要转换的
- timedelta.days:天数,取值 -999999999 ~ 999999999
- timedelta.seconds:秒数,取值0 ~ 86399(1小时秒数 * 一天24小时,进行进位)
- timedelta.microseconds:微秒,取值 0 ~ 999999
(三)timedelta 实例方法
- timedelta.total_seconds():返回 timedelta 对象所包含的总秒数
用法
1.
t1=datetime.now() # 当前时间
t2=datetime (year=1999, month=4, day=26, hour=0, minute=0,second=0, microsecond=0)
# 构造一个时间
print(t1)
print(t2)
print(timedelta.total_seconds(t1-t2)) # 进行运算2023-11-10 12:32:47.457375
1999-04-26 00:00:00
774534767.457375
2.
t1=datetime.now()
t2=timedelta(days=1)
print(t1)
print(t2)
print(t1+t2) # 加一天2023-11-10 13:41:33.859151
1 day, 0:00:00
2023-11-11 13:41:33.859151
五、时间类型转换
主要是 datetime,str,时间戳之间的转换
python中时间日期格式化符号:
- %a:星期的简写(星期一 ~ 天:Mon, Tue, Wed, Thu, Fri, Sat, Sun)
- %A :星期的全写(星期一 ~ 天:Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)
- %w:在一个星期中的第几天( 0 表示星期天 ... 6 表示星期六)
- %d:在一个月中的第几天(01, 02, ..., 31)
- %b:月份的简写(一月 ~ 十二月:Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)
- %B: 月份的全写(一月 ~ 十二月:January, February, March, April, May, June, July, August, September, October, November, December)
- %m:月份(01, 02, ..., 12)
- %y:用两个数字表示年份(例如 2014年 == 14)
- %Y:用四个数字表示年份
- %H:二十四小时制(00, 01, ..., 23)
- %I:十二小时制(01, 02, ..., 11)
- %p:AM 或者 PM
- %M:分钟(00, 01, ..., 59)
- %S:秒(00, 01, ..., 59)
- %f:微秒(000000, 000001, ..., 999999)
- %z:与 UTC 时间的间隔 ;如果是本地时间,返回空字符串((empty), +0000, -0400, +1030)
- %Z:时区名称;如果是本地时间,返回空字符串((empty), UTC, EST, CST)
- %j:在一年中的第几天(001, 002, ..., 366)
- %U:在一年中的第几周,星期天作为第一天(00, 01, ..., 53)
- %W:在一年中的第几周,星期一作为第一天(00, 01, ..., 53)
- %c:用字符串表示日期和时间(Tue Aug 16 21:30:00 2014)
- %x:用字符串表示日期(08/16/14)
- %X:用字符串表示时间(21:30:00)
- %%:表示百分号
(一)str 与 datetime 转换
1.str->datetime
- 使用 datetime.strptime()
a = '1999-04-01 10:15:55'
b = datetime.strptime(a,'%Y-%m-%d %H:%M:%S')
print(a)
print(b)
print(type(a))
print(type(b))1999-04-01 10:15:55
1999-04-01 10:15:55
<class 'str'>
<class 'datetime.datetime'>
2.datetime->str
- 使用 datetime.strftime()
today = datetime.now()
s=today.strftime('%Y-%m-%d %H:%M:%S:%f')
print(today)
print(s)
print(type(today))
print(type(s))2023-11-10 14:37:13.912090
2023-11-10 14:37:13:912090
<class 'datetime.datetime'>
<class 'str'>
(二)date/datetime与时间戳转换
需要借助 time 中时间戳方法
1.时间戳->datetime
- 使用 datetime.fromtimestamp()
import timet=time.time() # 可以获得当前时间戳
print(t)
print(datetime.fromtimestamp(t))1699601829.9119656
2023-11-10 15:37:09.911966
2.datetime->时间戳
- 使用 datetime.timestamp()
t=datetime.timestamp(datetime.now())
print(t)
print(datetime.fromtimestamp(t))1699602673.122222
2023-11-10 15:51:13.122222
(三)时间戳 timestamp 与字符串转换
字符串与时间戳不能直接进行转换,需要借助 datetime 作为桥梁
1.时间戳->str
时间戳->datetime->str
d=datetime.timestamp(datetime.now()) # 获得一个时间戳
s=datetime.strftime(datetime.fromtimestamp(d),'%Y-%m-%d %H:%M:%S') # 时间戳->datetime->str
print(d)
print(s)
print(type(d))
print(type(s))1699603804.461055
2023-11-10 16:10:04
<class 'float'>
<class 'str'>
2.str->时间戳
str->datetime->时间戳
s='20231225' # 字符串
f=datetime.strptime(s,'%Y%m%d') # 转为datetime
d=f.timestamp() # 得到时间戳
print(s)
print(d)
print(type(s))
print(type(d))20231225
1703433600.0
<class 'str'>
<class 'float'>
相关文章:
Python 的 datetime 模块
目录 简介 一、date类 (一)date 类属性 (二)date 类方法 (三)实例属性 (四)实例的方法 二、time类 (一)time 类属性 (二)tim…...
Termius for Mac:掌控您的云端世界,安全高效的SSH客户端
你是否曾经在Mac上苦苦寻找一个好用的SSH客户端,让你能够远程连接到Linux服务器,轻松管理你的云端世界?现在,我们向你介绍一款强大而高效的SSH客户端——Termius。 Termius是一款专为Mac用户设计的SSH客户端,它提供了…...
Ubuntu 下监控并自动重启网卡
很多时候网站服务器挂掉也可能是因为网卡挂掉了,如果你网站不能访问时 SSH 也无效了一般都是这个问题。这时可以通过一个定时脚本监控网络并进行自动重启。 1 创建脚本 auto_restart_network.sh 4 5 6 7 8 9 #!/bin/bash ping www.baidu.com -c 1 >/dev/null i…...
377. 组合总和 Ⅳ
给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 示例 1: 输入:nums [1,2,3], target 4 输出:7 解释&#…...
【OpenCV】计算视频的光流并跟踪物体calcOpticalFlowPyrLK
一、介绍 计算光流可以使用OpenCV的calcOpticalFlowPyrLK方法,cv2.calcOpticalFlowPyrLK是OpenCV库中的一个函数,用于计算稀疏光流。它实现的是Lucas-Kanade方法,这是一种常用的光流计算方法。 光流是图像中物体运动的近似表示&#…...
C语言进阶
数组 在基础篇说过,数组实际上是构造类型之一,是连续存放的。 一维数组 定义 定义格式:[存储类型] 数据类型 数组名标识符[下标]; 下面分模块来介绍一下数组的定义部分的内容。 1、初始化和元素引用: 可以看到数组是连续存储…...
Linux之gdb
gdb就是一个Linux的调试工具,类似与vs里面的调试 可执行程序也有格式,不是简单的二进制堆砌...
100天精通风控建模(原理+Python实现)——第3天:风控建模中如何处理缺失值?
风控模型已在各大银行和公司都实际运用于业务,用于营销和风险控制等。 之前已经阐述了100天精通风控建模(原理+Python实现)——第1天:什么是风控建模? 100天精通风控建模(原理+Python实现)——第2天:风控建模有什么目的? 接下来看下100天精通风控建模(原理…...
Leetcode—680.验证回文串II【简单】
2023每日刷题(二十七) Leetcode—680.验证回文串II 实现代码 class Solution { public:bool judgeFunc(string s, int left, int right) {while(left < right) {if(s[left] ! s[right]) {return false;}left;right--;}return true;}bool validPalin…...
Redis五种数据类型及命令操作(二)
🎈个人公众号:🎈 :✨✨✨ 可为编程✨ 🍟🍟 🔑个人信条:🔑 知足知不足 有为有不为 为与不为皆为可为🌵 🍉本篇简介:🍉 本篇记录Redis五种数据类型及命令操作,如…...
低代码信创开发核心技术(三):MDA模型驱动架构及元数据系统设计
前言 写最后一篇文章的时候,我本人其实犹豫了半年,在想是否发布出这篇文章,因为可能会动了很多人的利益。所以这篇文章既是整个低代码信创开发的高度总结,也是最为精华的一部分,它点明了低代码中最为核心的技术。虽然…...
HslCommunication模拟西门子读写数据
导入HslCommunication C#端代码(上位机) 这里要注意的是上位机IP用的当前电脑的IP。 using HslCommunication; using HslCommunication.Profinet.Siemens; using System; using System.Collections.Generic; using System.ComponentModel; using Syste…...
多测师肖sir_高级金牌讲师_ui自动化po框架版本02
ui自动化po框架版本02 一、 pages下的BasePage.py模块 此模块是封装所有用例的基类 比如说:所有用例要用到的元素定位,以及输入框输入,点击,下拉等等公共方法import unittest #导入unittest 框架 from time import *# 调试代码…...
线性判别分析(Linear Discriminant Analysis,LDA)
Linear Discriminant Analysis(LDA) 输入: 原始数据$D((x_1,y_1),(x_2,y_2),...,(x_m,y_m)$ 、 类别标签$Y[y_1,y_2,...,y_n]$、 降维到的维度d输出: 投影矩阵W、投影后的样本$Z$、算法步骤: 1.计算类内散度…...
git的分支及标签使用及情景演示
目录 一. 环境讲述 二.分支 1.1 命令 1.2情景演练 三、标签 3.1 命令 3.2 情景演示 编辑 一. 环境讲述 当软件从开发到正式环境部署的过程中,不同环境的作用如下: 开发环境:用于开发人员进行软件开发、测试和调试。在这个环境中…...
深度解析找不到msvcp120.dll相关问题以及解决方法
在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcp120.dll丢失”。这个错误通常会导致某些应用程序无法正常运行,给用户带来很大的困扰。那么,如何解决msvcp120.dll丢失的问题呢?本文将为大家介绍…...
SQL Server 2022 安装步骤——SQL Server设置身份验证教程
目录 前言: 安装详细步骤: 第一步: 第二步: 第三步: 第四步: SQL Server 连接的方式: Window验证: SQL Server验证: 两者之间区别: 总结: SQL Server身份验证登录配置教程: 第一步: 第二步: 第三步: 番外篇: 前言: 本文讲解,如何安装SQL Server安…...
Maven各方面配置好了却无法显示版本
今天配置了maven环境,各方面都配置好了命令行却一直没办法显示maven的版本,原因 竟是两个JDK导致maven无法选择,因为maven依赖于JDK,导致在选择JDK的时候差生了二义 性,在环境变量里面删除不常用的JDK,只…...
Jdk 1.8 for mac 详细安装教程(含版本切换)
Jdk 1.8 for mac 详细安装教程(含版本切换) 官网下载链接 https://www.oracle.com/cn/java/technologies/downloads/#java8-mac 一、选择我们需要安装的jdk版本,这里以jdk8为例,下载 macOS 版本,M芯片下载ARM64版本…...
02MyBatisPlus条件构造器,自定义SQL,Service接口
一、条件构造器 1.MyBatis支持各种复杂的where条件,满足开发的需求 Wrapper是条件构造器,构建复杂的where查询 AbstractWrapper有构造where条件的所有方法,QueryWrapper继承后并有自己的select指定查询字段。UpdateWrapper有指定更新的字段的…...
OpenClaw连接飞书(机器人)配置及相关参数说明
飞书企业自创应用(机器人) 飞书开发者后台:https://open.feishu.cn/app?langzh-CN 1、创建企业自建应用,填写应用名称和描述。 2、添加应用能力:机器人 3、权限管理:应用身份权限,开通聊天基础…...
SAMD微控制器安全Flash存储库设计与实践
1. 项目概述SAMD_SafeFlashStorage 是一款专为 SAMD21(如 Arduino Zero、MKR系列)和 SAMD51(如 Adafruit Metro M4、Arduino MKR VIDOR 4000)微控制器设计的安全型闪存数据存储库。它并非简单复刻,而是对原始 cmaglie/…...
Mbed平台任意引脚软件PWM库实现与应用
1. 项目概述lib_PwmOutAllPin是一个面向 ARM Mbed OS 平台的轻量级扩展库,其核心目标是突破 Mbed 原生PwmOut类的硬件引脚限制,实现“任意数字引脚输出 PWM 波形”的能力。在标准 Mbed SDK 中,PwmOut构造函数仅接受预定义的、具备硬件 PWM 功…...
**发散创新:用 Rust实现高性能光线追踪渲染器的核心逻辑与优化技巧**在现代图形学领域,**光线追踪
发散创新:用 Rust 实现高性能光线追踪渲染器的核心逻辑与优化技巧 在现代图形学领域,光线追踪(Ray Tracing) 已成为高质量实时渲染的基石。随着硬件支持(如 NVIDIA RTX)普及,越来越多开发者开始…...
Teensy 4.1 外部PSRAM音频加载与实时播放方案
1. TeensyAudioFlashLoader 项目概述TeensyAudioFlashLoader 是一个面向 Teensy 4.1 平台的专用音频资源管理工具,核心功能是将原始音频样本(.RAW 格式)从 microSD 卡高效加载至 Teensy 4.1 外挂的 Quad-SPI Flash RAM(即外部 QSP…...
从本地到云端:FastAPI服务器部署的5个必知要点(避坑指南)
从本地到云端:FastAPI服务器部署的5个必知要点(避坑指南) 当你兴奋地完成了一个FastAPI应用的开发,准备将它从本地环境迁移到云端服务器时,可能会遇到各种意想不到的问题。接口无法访问、性能突然下降、请求超时...这些…...
【限时解锁】2026奇点大会议程PDF+演讲PPT合集(含17场技术Demo实录链接),仅开放至本周日24点
第一章:2026奇点智能技术大会完整议程公布:50AI大咖齐聚上海 2026奇点智能技术大会(https://ml-summit.org) 由全球人工智能前沿研究机构与长三角AI产业联盟联合主办的2026奇点智能技术大会将于4月18日至20日在上海张江科学会堂举行。本届大会以“智能…...
HTML怎么在GeneratePress中精调图片对齐_GP轻量主题CSS覆盖方法
用CSS覆盖GP默认图片对齐需提高选择器权重(如.site-content img.aligncenter),补display: block配合margin: 0 auto;text-align仅对行内级图片有效;alignnone需加height: auto防溢出;移动端须配media断点。…...
【Verilog】从零开始:Verilog基础语法全解析
1. Verilog基础语法概述 第一次接触Verilog时,我盯着代码看了半天——这玩意儿既像C语言又像电路图说明书。作为硬件描述语言(HDL),Verilog确实和我们熟悉的软件编程语言不太一样。它最神奇的地方在于:你写的每一行代码最终都会变成真实的电路…...
2026届毕业生推荐的五大降重复率工具实测分析
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 由自然语言处理跟深度学习算法奠基的AI论文查重技术,可辨认文本里的模式重复、语…...
