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有指定更新的字段的…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

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

C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist
现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...