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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vscode 访问本地或者远程docker环境

1、vscode 访问docker本地环境 直接点击左下角连接图标&#xff0c;弹出选项可以选择容器&#xff0c;只要容器在本地运行者&#xff0c;选择attach可以看到运行中的容器可以选择&#xff0c;选择其中需要选择的就行 ## 运行容器&#xff0c;可以-d后台运行都可以 docker run…

【数据结构初阶】顺序表

各位读者老爷好&#xff0c;又见面了哈&#xff01;鼠鼠我呀现在基于C语言浅浅介绍一下数据结构初阶中的顺序表&#xff0c;希望对你有所帮助&#xff01; 目录 1.线性表 2.顺序表 2.1概念即结构 2.2动态顺序表接口的实现 2.2.1定义顺序表 2.2.2初始化 2.2.3销毁 2.2…

asp.net外卖网站系统VS开发mysql数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net外卖网站系统 是一套完善的web设计管理系统&#xff0c;系统采用mvc模式&#xff08;BLLDALENTITY&#xff09;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为mysql&#xff0c;使用c#语…

【Unity每日一记】“调皮的协程”,协程和多线程的区别在哪里

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

Scrum Master 如何更好的支持PO?

在过去几年中&#xff0c;和许多Scrum Master交流时&#xff0c;我遇到一个令人担忧的模式。虽然我们有Scrum指南和其他补充资源&#xff0c;许多Scrum Master&#xff0c;特别是刚起步的Scrum Master们&#xff0c;还在日复一日的为如何帮助Product Owner而挣扎着。 以下是我…

python爬虫hook定位技巧、反调试技巧、常用辅助工具

一、浏览器调试面板介绍 二、hook定位、反调试 Hook 是一种钩子技术&#xff0c;在系统没有调用函数之前&#xff0c;钩子程序就先得到控制权&#xff0c;这时钩子函数既可以加工处理&#xff08;改变&#xff09;该函数的执行行为&#xff0c;也可以强制结束消息的传递。简单…

掌握未来技术趋势:深度学习与量子计算的融合

掌握未来技术趋势&#xff1a;深度学习与量子计算的融合 摘要&#xff1a;本博客将探讨深度学习与量子计算融合的未来趋势&#xff0c;分析这两大技术领域结合带来的潜力和挑战。通过具体案例和技术细节&#xff0c;我们将一睹这两大技术在人工智能、药物研发和金融科技等领域…

CnosDB 在最近新发布的 2.4.0 版本中增加对时空函数的支持。

CnosDB 在最近新发布的 2.4.0 版本中增加对时空函数的支持。 概述 时空函数是一种用于描述时空结构和演化的函数。它在物理学、数学和计算机科学等领域中都有广泛的应用。时空函数可以描述物体在时空中的位置、速度、加速度以及其他相关属性。 用法 CnosDB 将使用一种全新的…

[工业自动化-16]:西门子S7-15xxx编程 - 软件编程 - 西门子仿真软件PLCSIM

目录 前言&#xff1a; 一、PLCSIM仿真软件 1.1 PLCSIM仿真软件基础版&#xff08;内嵌&#xff09; 1.2 PLCSIM仿真软件与PLCSIM仿真软件高级版的区别&#xff1f; 1.3 PLCSIM使用 前言&#xff1a; PLC集成开发环境是运行在Host主机上&#xff0c;Host主机与PLC可以通过…

Android---内存泄漏的优化

内存泄漏是一个隐形炸弹&#xff0c;其本身并不会造成程序异常&#xff0c;但是随着量的增长会导致其他各种并发症&#xff1a;OOM&#xff0c;UI 卡顿等。 为什么要将 Activity 单独做预防&#xff1f; 因为 Activity 承担了与用户交互的职责&#xff0c;因此内部需要持有大…

从0到1实现一个前端监控系统(附源码)

目录 一、从0开始 二、上报数据方法 三、上报时机 四、性能数据收集上报 收集上报FP 收集上报FCP 收集上报LCP 收集上报DOMContentLoaded 收集上报onload数据 收集上报资源加载时间 收集上报接口请求时间 五、错误数据收集上报 收集上报资源加载错误 收集上报js错…

clouldcompare工具使用

文章目录 1.界面1.1 布局1.3 视觉显示方向1.4 放大镜1.5 建立旋转中心2.快速入门2.1 剪裁2.2 多点云拼接 1.界面 1.1 布局 参考&#xff1a;https://blog.csdn.net/lovely_yoshino/article/details/129595201 1.3 视觉显示方向 1.4 放大镜 1.5 建立旋转中心 2.快速入门 2.1 …