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开始)
2

print(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 time

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python调用chrome实现网页自动操作

一. 内容简介 python调用chrome实现网页自动操作。 二. 软件环境 2.1vsCode 2.2Anaconda version: conda 22.9.0 2.3代码 链接&#xff1a; 三.主要流程 3.1 下载驱动和插件 调用谷歌浏览器&#xff0c;需要下载浏览器驱动&#xff08;https://registry.npmmirror.co…

确定性 vs 非确定性:GPT 时代的新编程范式

分享嘉宾 | 王咏刚 责编 | 梦依丹 出品 | 《新程序员》编辑部 在 ChatGPT 所引爆的新一轮编程革命中&#xff0c;自然语言取代编程语言&#xff0c;在只需编写提示词/拍照就能出程序的时代&#xff0c;未来程序员真的会被简化为提示词的编写员吗&#xff1f;通过提示词操纵 …

jQuery HTML/CSS 参考文档

jQuery HTML/CSS 参考文档 文章目录 应用样式 示例属性方法示例 jQuery HTML/CSS 参考文档 应用样式 addClass( classes ) 方法可用于将定义好的样式表应用于所有匹配的元素上。可以通过空格分隔指定多个类。 示例 以下是一个简单示例&#xff0c;设置了para标签 <p&g…

【机试题】LazyIterator迭代器懒加载问题

将下面这个未完成的Java工具类补充完成&#xff0c;实现懒加载的功能&#xff0c;该类需要实现Iterable接口&#xff0c;能够遍历所有数据。具体要求如下&#xff1a; 工具类提供了一个ValueLoader接口&#xff0c;用于获取数据&#xff0c;其中ValueLoader的接口定义为&#x…

css:clip元素裁剪实现Loading加载效果边框

clip 属性定义了元素的哪一部分是可见的。clip 属性只适用于 position:absolute 的元素。 警告&#xff1a; 这个属性已被废弃。建议使用 clip-path 文档 https://developer.mozilla.org/zh-CN/docs/Web/CSS/cliphttps://developer.mozilla.org/zh-CN/docs/Web/CSS/clip-path …

AndroidStudio gitee令牌过期 解决方式 remote:Oauth: Access token is expired

记一次&#xff0c;gitee令牌过期 解决方式 Oauth: Access token is expired fatal: unable to access ‘https://gitee.com/xxxx.git/’: The requested URL returned error: 403 remote: [session-e14669a3] Oauth: Access token is expired fatal: unable to access https…

SpringBoot3+Vue3+Mysql+Element Plus完成数据库存储blob类型图片,前端渲染后端传来的base64类型图片

前言 如果你的前后端分离项目采用SpringBoot3Vue3Element Plus&#xff0c;且在没有OSS&#xff08;对象存储&#xff09;的情况下&#xff0c;使用mysql读写图片&#xff08;可能不限于图片&#xff0c;待测试&#xff09;。 耗时三天&#xff0c;在踩了无数雷后&#xff0c…

C# PaddleDetection yolo 印章检测

效果 项目 代码 using OpenCvSharp; using OpenCvSharp.Extensions; using Sdcb.PaddleDetection; using Sdcb.PaddleInference; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq…

GEE:将鼠标变成十字指针,点击获取影像值,显示值到UI中

作者:CSDN @ _养乐多_ 本文记录了在 Google Earth Engine(GEE)开发中,将鼠标变成十字指针,点击获取影像值,显示值到UI中的代码片段。这段代码复制过去修改变量名就可以用了。 效果如下图所示, 文章目录 一、代码片段一、代码片段 使用的时候将 YLDImage 变量换成你屏…

使用WinDbg分析软件突然崩溃的问题

为了测试windbg有多么牛逼&#xff0c;所以仅仅只是测试一下&#xff0c;属于事后诸葛亮型&#xff0c;也只是为了验证一下&#xff0c;把此方法学会即可。 模拟场景&#xff1a; 软件运行后&#xff0c;点击按钮&#xff0c;直接崩溃掉&#xff0c;什么提示都没有。因此&…

uniapp vue2 vuex 持久化

1.vuex的使用 一、uniapp中有自带vuex插件&#xff0c;直接引用即可 二、在项目中新建文件夹store,在main.js中导入 在根目录下新建文件夹store,在此目录下新建index.js文件 index.js import Vue from vueimport Vuex from vuexVue.use(Vuex)const store new Vuex.Store(…

【Java SE】类和对象(上)

目录 一. 面向对象的初步认知 1.1 什么是面向对象 1.2 面向对象与面向过程 二. 类定义和使用 2.1 简单认识类 2.2 类的定义格式 三. 类的实例化 3.1 什么是实例化 3.2 实例化对象 四. this引用(重点&#xff09; 4.1 为什么要有this引用 4.2 this的使用 4.3 this引…

C#中.NET 7.0不再支持ADO.NET,.NET Framwork依旧支持

目录 一、.NET 7.0框架下任何应用不再支持ADO.NET 二、.NET Framwork框架下Windows窗体应用支持ADO.NET 三、.NET 7.0不支持ADO.NET的真正原因 经过一阵折腾&#xff0c;终于可以确证C#中.NET框架不再支持用户通过ADO.NET的实体框架模型访问数据库&#xff0c;无论是.NET 7…

[EFI]戴尔Latitude 5310电脑 Hackintosh 黑苹果efi引导文件

硬件型号驱动情况 主板戴尔Latitude 5310 处理器Intel Core i5-10210U(1.6GHz/L3 6M)已驱动 内存8GB已驱动 硬盘三星 MZVLW1T0HMLH-000L2 (1024 GB / 固态硬盘)已驱动 显卡Intel UHD620已驱动 声卡瑞昱 Audio ALC299 英特尔 High Definition Audio 控制器已驱动 网卡RT…

Swift编写爬取商品详情页面的爬虫程序

以下是一个使用Swift编写的基本爬虫程序&#xff0c;该程序使用Selenium库模拟浏览器行为来爬取商品详情页面的内容。 import Foundation import Selenium// 设置爬虫ip信息 let proxyHost "duoip" let proxyPort 8000 let proxy SeleniumProxy(httpProxy: "…

【C语言 | 预处理】C语言预处理详解(三)——内存对齐、手把手教你计算结构体大小

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

Linux——进度条小程序|行缓冲区概念|使用 git 命令行

目录 1./r 和 /n 2.行缓冲区概念 3.使用 git 命令行 安装git 克隆到本地仓库 添加文件到仓库 提交到本地仓库 提交到远端仓库 1./r 和 /n 对于 /n 想必都不陌生&#xff0c;是换行的意思 而 /r 就是回车的意思 &#xff0c;回到一行的开始 在C/C中 \n通常都代表 回车…

k8s-docker二进制(1.28)的搭建

二进制文件-docker方式 1、准备的服务器 角色ip组件k8s-master1192.168.11.111kube-apiserver,kube-controller-manager,kube-scheduler,etcdk8s-master2192.168.11.112kube-apiserver,kube-controller-manager,kube-scheduler,etcdk8s-node1192.168.11.113kubelet,kube-prox…

学习使用JS实现Echarts的图表保存为图片功能:saveAsImage和getDataURL

学习使用JS实现Echarts的图表保存为图片功能 接口getDataURL实现思路 需求分析 实际项目开发过程中经常会有图表展示功能&#xff0c;同时为了满足用户需要&#xff0c;会附带着图表导出功能&#xff0c;主要形式就是保存为图片。在Echarts中本身就提供这种配置项&#xff0c;…

MPC-模型预测控制笔记

线性mpc 凸优化 二次优化问题 1&#xff1a;建立预测模型 2&#xff1a;问题模型 3&#xff1a;求解优化问题 4&#xff1a;得到的优化控制驱动系统 上述方法与qp解一样 硬约束 硬约束 四组约束条件 二次规划求解 matlab代码&#xff1a; 软约束 可以用指数函数 加入…