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.rhkb.cn/news/187026.html

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

相关文章

UDP网络编程

一)熟悉TCP/IP五层协议: 1)封装:就是在数据中添加一些辅助传输的信息&#xff1b; 2)分用:就是解析这些信息 3)发送数据的时候&#xff0c;上层协议要把数据交给下层协议&#xff0c;由下层协议来添加一些信息 4)接收数据的时候&#xff0c;下层协议要把数据交给上层协议&#…

Python初学者软件以及如何安装和配置,新手入门必看系列。

文章目录 前言一、Python软件二、集成开发环境&#xff08;IDE&#xff09;1.PyCharm2.Spyder3.IDLE 三、包管理工具四、使用Python虚拟环境总结Python技术资源分享1、Python所有方向的学习路线2、学习软件3、精品书籍4、入门学习视频5、实战案例6、清华编程大佬出品《漫画看学…

探索云世界的无限可能

文章目录 每日一句正能量前言云计算的定义和现状云计算能做什么&#xff1f;云计算市场的新特征需求方向&#xff1a;云计算的基础服务已经稳固&#xff0c;行业解决方案是新的发力点模式方向&#xff1a;分布式云模式方向&#xff1a;边缘计算是一朵新的云技术方向&#xff1a…

AMESim 2021安装教程

主要是AMESim的安装 写在前面&#xff0c;由于项目需要&#xff0c;需要自学AMESim&#xff0c;因此需要安装这个软件&#xff0c;目前仅仅安装使用&#xff0c;还不涉及到与MATLAB的联合仿真&#xff0c;老板说用 RT LAB半实物仿真平台&#xff0c;但是简单搜了一下&#xff0…

ASUS华硕灵耀X2 Duo UX481FA(FL,FZ)_UX4000F工厂模式原装出厂Windows10系统

下载链接&#xff1a;https://pan.baidu.com/s/1sRHKBOyc3zu1v0qw4dSASA?pwd7nb0 提取码&#xff1a;7nb0 带有ASUS RECOVERY恢复功能、自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、MyASUS华硕电脑管家等预装程序所需要工具&#xff1a;16G或以上…

麒麟KYLINIOS软件仓库搭建03-软件仓库添加新版本的软件包

原文链接&#xff1a;麒麟KYLINIOS软件仓库搭建03-软件仓库添加新版本的软件包 hello&#xff0c;大家好啊&#xff0c;今天给大家带来麒麟桌面操作系统软件仓库搭建的文章03-软件仓库添加新版本的软件包&#xff0c;本篇文章主要给大家介绍了如何在麒麟桌面操作系统2203-x86版…

Vite项目的初体验 - 非Vite脚手架版本

开箱即用 &#xff08;out of box&#xff09;: 无需做任何的配置&#xff0c;就可以用vite来帮助我们处理构建工作。 前提 &#xff1a;node 版本 > 12.0.0&#xff0c;使用 npm 进行依赖管理。 本文的案例&#xff0c;从0到1的&#xff0c;一步一步的体会vite的作用。 本文…

图解三傻排序 选择排序、冒泡排序、插入排序

&#xff08;1&#xff09;选择排序 // 交换 void swap(int arr[], int i, int j) {int tmp arr[i];arr[i] arr[j];arr[j] tmp; }// 选择排序 void selectionSort(int arr[],int len) {if (len < 2) return;for (int minIndex, i 0; i < len - 1; i) {minIndex i;f…

WPS的JS宏基础(一)

基础知识 1、简单的第一个宏 //注意function只能全部用小写 function demo(){alert("你好!") }2、录制宏生成工资条 function 使用录制宏自动生成代码以JS宏为例()//使用相对引用 {Selection.Copy(undefined);ActiveCell.Offset(5, 0).Range("A1:M4").I…

Ubuntu22.04 下 NFS 相关问题与完整配置(客户机 MacOS)

categories: [Linux-Shell] tags: Linux NFS 写在前面 最近折腾一下 NFS, 先白嫖一顿华子云的 1 个月服务器, 2C4G 感觉不错了, 但NFS 配置起来还是有点难度, 主要还是随机分配的端口配置方面比较恶心. server环境: 华为云 2C4G Ubuntu22.04 client环境: MacOS M1 with brew …

排序算法的分析及实现

目录​​​​​​​ 1. 排序 1.1. 排序的概念 1.2. 排序的稳定性 1.3. 内部排序和外部排序 2. 直接插入排序 2.1. 直接插入排序 2.2. 直接插入排序的两种情况 1. 情况一 2. 情况二 2.3. 直接插入排序的单趟排序 2.4. 直接插入排序的完整实现 2.5. 直接插入排序的时…

接收表单数据

如果您尝试按下提交按钮&#xff0c;浏览器将显示“Method Not Allowed”错误。这是因为到目前为止&#xff0c;前一节中的登录视图函数完成了一半的工作。它可以在网页上显示表单&#xff0c;但是还没有逻辑来处理用户提交的数据。这是Flask-WTF使工作变得非常简单的另一个领域…

selenium xpath定位

selenium-xpath定位 <span style"background-color:#2d2d2d"><span style"color:#cccccc"><code class"language-javascript">element_xpath <span style"color:#67cdcc"></span> driver<span styl…

有什么可以自动保存微信文件的方法么?

8-3 本文要介绍的方法&#xff0c;可以自动帮你保存微信上收到的文件型数据&#xff0c;比如文件、图片、视频&#xff0c;如果你的工作需要每天或者经常保存大量的从微信收到的文件型数据&#xff0c;也许本文适合你&#xff0c;本文介绍的工具&#xff0c;对微信多开也有效果…

Git安装配置保姆级教程和Git创建仓库的基本原理和常用命令

目录 前言 一、Git简介 1.Git 与 SVN 区别点 2.Git的介绍 3.Git 工作流程 4.Git 工作区、暂存区和版本库 二、Git安装配置 1.Linux 平台上安装 2.Windows 平台上安装 三、Git 创建仓库和下载 1、首先需要注册一个gitee账号 2.git初始化并提交到远程仓库 3.另一用户…

STM32 蜂鸣器介绍 配置 播放音节

蜂鸣器一般被分为两类&#xff1a;有源蜂鸣器和无源蜂鸣器。其中源是振荡源。有源蜂鸣器内部有振荡电路&#xff0c;可以把直流电源转换为一定频率的脉冲信号。因为它一直输出一定的频率&#xff0c;我们无法改变频率&#xff0c;所以声音只有一种&#xff0c;我们只能通过电源…

表象变换与矩阵元

表象变换 一维粒子哈密顿量 表象中的矩阵元 态的表象变换 不难证明 算符的表象变换 坐标表象 Non-denumerable basis

高校教务系统登录页面JS分析——长沙理工大学教务系统

高校教务系统密码加密逻辑及JS逆向 本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文&#xff0c;你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文将是本专栏最后一篇文章&#xff0c;我看了绝大多数高…

微信小程序:js实现不改变原数组的情况下增加一条对象到新数组中

效果 核心 old_array.slice(0) 表示对 old_array 这个数组进行切片操作&#xff0c;从索引 0 开始&#xff08;包括索引 0&#xff09;&#xff0c;直到数组的末尾&#xff0c;old_array.slice(0) 中的 0 表示开始切片的索引位置&#xff0c;而由于没有传入第二个参数&#xff…

利用中断做数码表

功能要求:1.按下KEY1&#xff0c;显示数字开始每0.5秒加1&#xff0c;加到&#xff08;10学号&#xff09;返回0&#xff0c;0显示2秒后继续开始重复加1。 2. 任何时候按下KEY2数字清零&#xff0c;并停止加1。 3. KEY1和KEY2分别采用查询和外部中断方式。 要求程序中有硬件…