广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python标准库datetime date模块的详细介绍
  • 319
分享到

Python标准库datetime date模块的详细介绍

2024-04-02 19:04:59 319人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录前言1、定义1.2、常见错误2、date类常用的函数2.1、获取当期日期2.2、格式化日期2.2.1、ctime()2.2.2、datetime.date对象2.2.3、repl

前言

datetime是python提供的操作日期和时间的标准库,主要有datetime.date模块、datetime.time模块及datetime.datetime模块。其中date模块提供了日期操作相关的方法;time模块提供了时间操作相关的方法;datetime提供了日期时间操作的相关内容。本文主要介绍datetime.date模块中常用函数的使用详情。

日期对象类:

  • 日期对象具有3个属性:年份、月份、日
  • 日期对象的创建使用date()定义
  • date()可以将传入的参数转化为datetime.date类型
  • date()函数按位置传参必须是:年份、月份、日
  • date()函数的参数中年份的范围是1-9999,月份的范围是1-12,日的范围是1-31

1、定义

  • 先导入datetime库再操作
# coding:utf-8
import datetime
now_date = datetime.date(2022, 12, 26)
print(now_date)

1.2、常见错误

  • 缺少参数
  • 按位置传参时参数值超出范围
# coding:utf-8
import datetime
print(datetime.date(2022, 12, 26))
print(type(datetime.date(2022, 12, 26))) # <class 'datetime.date'>
# 下面的代码报错,缺少参数
# print(datetime.date(2022, 12)) # TypeError: function missing required argument 'day' (pos 3)
# 下面的代码提示值错误,date()函数的参数依次为 年份、月份、日;年份的范围是1-9999,月份的范围是1-12,日的范围是1-31
# print(datetime.date(10001, 12, 12)) # ValueError: year 10001 is out of range
# print(datetime.date(2022, 13, 12)) # ValueError: month must be in 1..12
# print(datetime.date(2022, 12, 32)) # ValueError: day is out of range for month
# 关键字传传参,只要保证年份、月份、天的值都在可用范围内,位置不受影响
print(datetime.date(day=15, year=2029, month=12))

2、date类常用的函数

2.1、获取当期日期

# coding:utf-8
import datetime
print(datetime.date.today()) # 2022-07-08
print(type(datetime.date.today())) # <class 'datetime.date'>

2.2、格式化日期

2.2.1、ctime()

  • 将一个datetime.date对象转换为日期时间格式的字符串
  • ctime()函数的参数必须是 datetime.date类型
print(datetime.date.ctime(datetime.date.today())) # Fri Jul 8 00:00:00 2022
print(type(datetime.date.ctime(datetime.date.today()))) # <class 'str'>
# ctime()函数的参数必须是 datetime.date类型
print(datetime.date.ctime(datetime.date(2022, 12, 26))) # Mon Dec 26 00:00:00 2022

2.2.2、datetime.date对象

datetime_1 = datetime.date(2022, 12, 26)
# 获取日期对象的日,返回的值为int类型
print(datetime_1.day, type(datetime_1.day), type(datetime_1)) # 26 <class 'int'> <class 'datetime.date'>
# 获取日期对象的月,返回的值亦为int类型
print(datetime_1.month, type(datetime_1.month), type(datetime_1)) # 12 <class 'int'> <class 'datetime.date'>
# 获取日期对象的年,返回的值亦为int类型
print(datetime_1.year, type(datetime_1.year), type(datetime_1)) # 2022 <class 'int'> <class 'datetime.date'>

2.2.3、replace(self, year=None, month=None, day=None)

  • 替换datetime.date对象的值
  • replace()函数具有一个必传参数,三个默认参数
  • year是要替换的年度
  • month是要替换的月份
  • day是要替换的日
datetime_1 = datetime.date(2022, 12, 26)
print(datetime.date.replace(datetime_1, year=2019, month=11, day=25)) # 2019-11-25
print(type(datetime.date.replace(datetime_1, year=2019, month=11, day=25))) # <class 'datetime.date'>
print(datetime_1)
# 必须有一个日期或者时间对象的参数,不传替换参数即返回传入的datetime.date对象的值
print(datetime.date.replace(datetime_1)) # 2022-12-26
# 只替换年度
print(datetime.date.replace(datetime_1, year=2019)) # 2019-12-26
# 只替换月份
print(datetime.date.replace(datetime_1, month=11)) # 2022-11-26
# 只替换日
print(datetime.date.replace(datetime_1, day=25)) # 2022-12-25

通过观察,替换年度、月份、日 都是在2022-12-26(datetime_1变量的初始值)基础上替换的。所以可以肯定的是该函数不会改变原变量的值

2.2.4、格式化日期

格式符号

符号的含义

%y

两位数的年份表示(00-99)

%Y

四位数的年份表示(000-9999)

%m

月份(01-12)

%d

月内中的一天(0-31)

%H

24小时制小时数(0-23)

%I

12小时制小时数(01-12)

%M

分钟数(00-59)

%S

秒(00-59)

%a

本地简化星期名称

%A

本地完整星期名称

%b

本地简化的月份名称

%B

本地完整的月份名称

%c

本地相应的日期表示和时间表示

%j

年内的一天(001-366)

%p

本地A.M.或P.M.的等价符

%U

一年中的星期数(00-53)星期天为星期的开始

%w

星期(0-6),星期天为 0,星期一为 1,以此类推。

%W

一年中的星期数(00-53)星期一为星期的开始

%x

本地相应的日期表示

%X

本地相应的时间表示

%Z

当前时区的名称

%%

%号本身

datetime_2 = datetime.datetime.today()
print(datetime_2, type(datetime_2))
print(datetime.date.strftime(datetime_1, "%Y--%y--%D--%d--%H--%h--%M--%m--%S--%A--%a--%B--%b--%C--%c"))
print(datetime.date.strftime(datetime_2, "%Y--%y--%D--%d--%H--%h--%M--%m--%S--%A--%a--%B--%b--%C--%c"))
# 常用的格式: 年、月、日、时、分、秒
print(datetime.date.strftime(datetime_2, "%Y-%m-%d %H:%M:%S")) # 2022-07-08 18:32:40

2.3、ISO标准格式日期

  • 格式:(4位年-2位月-两位日),如(2022,07,08)
# 返回日期或者时间对象的ISO标准日期(4位年-2位月-两位日)
print(datetime.date.isofORMat(datetime_1), datetime_1) # 2022-12-26 2022-12-26
print(datetime.date.isoformat(datetime_2), datetime_2) # 2022-07-08 2022-07-08 18:44:36.613676
# 将符合ISO标准格式的日期字符串转换为datetime.date对象
print(datetime.date.fromisoformat("2022-07-08"), type(datetime.date.fromisoformat("2022-07-08")))
# 不符合ISO标准格式的日期字符串则报错
# print(datetime.date.fromisoformat("2022-7-08")) # ValueError: Invalid isoformat string: '2022-7-08'
# print(datetime.date.fromisoformat("2022-07-8")) # ValueError: Invalid isoformat string: '2022-7-08'

2.3.1、获取符合ISO标准格式的日期字符串的星期几(1~7)

print(datetime.date.isoweekday(datetime.date(2022, 7, 3))) # 7 星期日
print(datetime.date.isoweekday(datetime.date(2022, 7, 4))) # 1 星期一
print(datetime.date.isoweekday(datetime.date(2022, 7, 8))) # 5 星期五
print(datetime.date.isoweekday(datetime.date(2022, 7, 9))) # 6 星期六

2.3.2、返回日期或者时间对象的星期几(0~6)

# 返回日期或者时间对象的星期几(0~6)
print(datetime.date.weekday(datetime.date(2022, 7, 3))) # 6 星期日
print(datetime.date.weekday(datetime.date(2022, 7, 4))) # 0 星期一
print(datetime.date.weekday(datetime.date(2022, 7, 8))) # 4 星期五
print(datetime.date.weekday(datetime.date(2022, 7, 9))) # 5 星期六

2.3.3、根据时间戳计算日期

print(datetime.date.fromtimestamp(2015236523)) # 2033-11-10
print(type(datetime.date.fromtimestamp(2015236523))) # <class 'datetime.date'>

2.3.4、ISO标准格式的时间元组

  • 格式 :(年份, 周数, 星期数),如(2022,26,7)
  • 周数:一年中的第几周,范围是1~53
  • 星期数:星期中的第几天,周一为第1天,周日为第7天
# 获取符合ISO标准格式的时间元组
print(datetime.date.isocalendar(datetime.date(2022, 7, 3))) # datetime.IsoCalendarDate(year=2022, week=26, weekday=7)
# 根据符合ISO标准格式的时间元组(年份, 周数, 星期数)计算日期
print(datetime.date.fromisocalendar(2022, 26, 7)) # 2022-07-03

2.4、公元历格式日期

  • 公元1年1月1日为1
print(datetime.date.fromordinal(1), type(datetime.date.fromordinal(1))) # 0001-01-01 <class 'datetime.date'>
print(datetime.date.fromordinal(5)) # 0001-01-05
print(datetime.date.fromordinal(738339)) # 2022-07-03
# 返回公元公历开始到现在的天数
print(datetime.date.toordinal(datetime.date(2022, 7, 3))) # 738339

3、其他

# 将 date类型转换为struct_time类型
print(datetime.date.timetuple(datetime.date(2022, 7, 3)))
# 日期类型的最大值
print(datetime.date.max)
# 日期类型的最小值
print(datetime.date.min)

附录:完整代码

# coding:utf-8
import datetime
# 日期对象类(date class)
"""
* 日期对象具有3个属性:年份、月份、日
* date()可以将指定的三个参数转化为datetime.date类的类型
* date()函数按位置传参必须是:年份、月份、日的顺序
"""
print(datetime.date(2022, 12, 26))
print(type(datetime.date(2022, 12, 26))) # <class 'datetime.date'>
# 下面的代码报错,缺少参数
# print(datetime.date(2022, 12)) # TypeError: function missing required argument 'day' (pos 3)
# 下面的代码提示值错误,date()函数的参数依次为 年份、月份、日;年份的范围是1-9999,月份的范围是1-12,日的范围是1-31
# print(datetime.date(10001, 12, 12)) # ValueError: year 10001 is out of range
# print(datetime.date(2022, 13, 12)) # ValueError: month must be in 1..12
# print(datetime.date(2022, 12, 32)) # ValueError: day is out of range for month
# 关键字传传参,只要保证年份、月份、天的值都在可用范围内,位置不受影响
print(datetime.date(day=15, year=2029, month=12))
# date类常用的函数
# 获取当期日期
print(datetime.date.today()) # 2022-07-08
print(type(datetime.date.today())) # <class 'datetime.date'>
# ctime()是将一个datetime.date对象转换为日期时间格式的字符串
print(datetime.date.ctime(datetime.date.today())) # Fri Jul 8 00:00:00 2022
print(type(datetime.date.ctime(datetime.date.today()))) # <class 'str'>
# ctime()函数的参数必须是 datetime.date类型
print(datetime.date.ctime(datetime.date(2022, 12, 26))) # Mon Dec 26 00:00:00 2022

# 创建一个 datetime.date对象
datetime_1 = datetime.date(2022, 12, 26)
# 获取日期对象的日,返回的值为int类型
print(datetime_1.day, type(datetime_1.day), type(datetime_1)) # 26 <class 'int'> <class 'datetime.date'>
# 获取日期对象的月,返回的值亦为int类型
print(datetime_1.month, type(datetime_1.month), type(datetime_1)) # 12 <class 'int'> <class 'datetime.date'>
# 获取日期对象的年,返回的值亦为int类型
print(datetime_1.year, type(datetime_1.year), type(datetime_1)) # 2022 <class 'int'> <class 'datetime.date'>
# 替换datetime.date对象的值
# replace(self, year=None, month=None, day=None) 函数具有一个必传参数,三个默认参数
# year是要替换的年度
# month是要替换的月份
# day是要替换的日
print(datetime.date.replace(datetime_1, year=2019, month=11, day=25)) # 2019-11-25
print(type(datetime.date.replace(datetime_1, year=2019, month=11, day=25))) # <class 'datetime.date'>
print(datetime_1)
# 必须有一个日期或者时间对象的参数,不传替换参数即返回传入的datetime.date对象的值
print(datetime.date.replace(datetime_1)) # 2022-12-26
# 只替换年度
print(datetime.date.replace(datetime_1, year=2019)) # 2019-12-26
# 只替换月份
print(datetime.date.replace(datetime_1, month=11)) # 2022-11-26
# 只替换日
print(datetime.date.replace(datetime_1, day=25)) # 2022-12-25
# 通过观察,替换年度、月份、日 都是在2022-12-26(datetime_1变量的初始值)基础上替换的。所以可以肯定的是该函数不会改变源变量的值
# 格式化日期
datetime_2 = datetime.datetime.today()
print(datetime_2, type(datetime_2))
print(datetime.date.strftime(datetime_1, "%Y--%y--%D--%d--%H--%h--%M--%m--%S--%A--%a--%B--%b--%C--%c"))
print(datetime.date.strftime(datetime_2, "%Y--%y--%D--%d--%H--%h--%M--%m--%S--%A--%a--%B--%b--%C--%c"))
# 常用的格式: 年、月、日、时、分、秒
print(datetime.date.strftime(datetime_2, "%Y-%m-%d %H:%M:%S")) # 2022-07-08 18:32:40
# 返回日期或者时间对象的ISO标准日期(4位年-2位月-两位日)
print(datetime.date.isoformat(datetime_1), datetime_1) # 2022-12-26 2022-12-26
print(datetime.date.isoformat(datetime_2), datetime_2) # 2022-07-08 2022-07-08 18:44:36.613676
# 将符合ISO标准格式的日期字符串转换为datetime.date对象
print(datetime.date.fromisoformat("2022-07-08"), type(datetime.date.fromisoformat("2022-07-08")))
# 不符合ISO标准格式的日期字符串则报错
# print(datetime.date.fromisoformat("2022-7-08")) # ValueError: Invalid isoformat string: '2022-7-08'
# print(datetime.date.fromisoformat("2022-07-8")) # ValueError: Invalid isoformat string: '2022-7-08'
# 获取符合ISO标准格式的日期字符串的星期几(1~7)
print(datetime.date.isoweekday(datetime.date(2022, 7, 3))) # 7 星期日
print(datetime.date.isoweekday(datetime.date(2022, 7, 4))) # 1 星期一
print(datetime.date.isoweekday(datetime.date(2022, 7, 8))) # 5 星期五
print(datetime.date.isoweekday(datetime.date(2022, 7, 9))) # 6 星期六
# 返回日期或者时间对象的星期几(0~6)
print(datetime.date.weekday(datetime.date(2022, 7, 3))) # 6 星期日
print(datetime.date.weekday(datetime.date(2022, 7, 4))) # 0 星期一
print(datetime.date.weekday(datetime.date(2022, 7, 8))) # 4 星期五
print(datetime.date.weekday(datetime.date(2022, 7, 9))) # 5 星期六
# 根据时间戳计算日期
print(datetime.date.fromtimestamp(2015236523)) # 2033-11-10
print(type(datetime.date.fromtimestamp(2015236523))) # <class 'datetime.date'>
# 获取符合ISO标准格式的时间元组(年份, 周数, 星期数)
# 周数:一年中的第几周,范围是1~53
# 星期数:星期中的第几天,周一为第1天,周日为第7天
print(datetime.date.isocalendar(datetime.date(2022, 7, 3))) # datetime.IsoCalendarDate(year=2022, week=26, weekday=7)
# 根据符合ISO标准格式的时间元组(年份, 周数, 星期数)计算日期
print(datetime.date.fromisocalendar(2022, 26, 7)) # 2022 -07-03
# 将整形按公元历转换为日期
# * 公元1年1月1日为1
print(datetime.date.fromordinal(1), type(datetime.date.fromordinal(1))) # 0001-01-01 <class 'datetime.date'>
print(datetime.date.fromordinal(5)) # 0001-01-05
print(datetime.date.fromordinal(738339)) # 2022-07-03
# 返回公元公历开始到现在的天数
print(datetime.date.toordinal(datetime.date(2022, 7, 3))) # 738339
# 将 date类型转换为struct_time类型
print(datetime.date.timetuple(datetime.date(2022, 7, 3)))
# 日期类型的最大值
print(datetime.date.max)
# 日期类型的最小值
print(datetime.date.min)

到此这篇关于Python标准库datetime date模块的详细介绍的文章就介绍到这了,更多相关Python date模块 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python标准库datetime date模块的详细介绍

本文链接: https://www.lsjlt.com/news/119293.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python标准库datetime date模块的详细介绍
    目录前言1、定义1.2、常见错误2、date类常用的函数2.1、获取当期日期2.2、格式化日期2.2.1、ctime()2.2.2、datetime.date对象2.2.3、repl...
    99+
    2022-11-11
  • Python标准库datetime之datetime模块用法分析详解
    目录1、日期时间对象2、创建日期时间对象2.1、通过datetime.datetime.utcnow()创建2.2、通过datetime.datetime.today()函数创建2....
    99+
    2022-11-11
  • C++的sstream标准库详细介绍
    C++的sstream标准库介绍 接下来我们继续看一下C++风格的串流控制 ,C++引入了ostringstream、istringstream、stringstream这三个类,要...
    99+
    2022-11-15
    sstream C++
  • Python 模块EasyGui详细介绍
    Python 模块EasyGui详细介绍 前言: 在Windows想用Python开发一些简单的界面,所以找到了很容易上手的EasyGui库。下面就分享一下简单的使用吧。 参考的链接:官网Tutorial ...
    99+
    2022-06-04
    详细介绍 模块 Python
  • 详解Python常用标准库之时间模块time和datetime
    目录time时间模块time -- 获取本地时间戳localtime -- 获取本地时间元组(UTC)gmtime -- 获取时间元组(GMT)mktime -- 时间元组获取时间戳...
    99+
    2022-11-11
  • python中re模块的详细介绍
    本篇内容介绍了“python中re模块的详细介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!正则表达式的元字符有. ^ $ * { [ ...
    99+
    2023-06-04
  • Python hashlib模块与subprocess模块使用详细介绍
    目录1、什么是哈希hash2、hash的用途3、如何用4、subprocess模块1、什么是哈希hash hash一类算法,该算法接受传入的内容,经过运算得到一串hash值 hash...
    99+
    2022-11-11
  • python中内置库os与sys模块的详细介绍
    目录os包sys模块os包 想要使用os包一样要先导入:import os os包下可以直接调用的函数 下面介绍一下os包中可以直接调用的函数: 例子: 例子: 例子: ...
    99+
    2022-11-11
  • Python Queue模块详细介绍及实例
    Python Queue模块 Python中,队列是线程间最常用的交换数据的形式。Queue模块是提供队列操作的模块,虽然简单易用,但是不小心的话,还是会出现一些意外。 创建一个“队列”对象 imp...
    99+
    2022-06-04
    详细介绍 实例 模块
  • 一篇文章带你了解python标准库--datetime模块
    目录1. datetime模块介绍1.1 datetime模块包含的类1.2 datetime模块中包含的常量2. datetime实例的方法3. 日期格式化符号总结1. datet...
    99+
    2022-11-12
  • Python模块介绍与使用详细讲解
    目录模块的相关概念 1. 什么是模块2. 使用模块的好处模块的使用1. 自定义模块a) 方法一: 导入模块:b) 方法二c) 导入自己的模块Python中的包 1...
    99+
    2022-11-12
  • Python标准库(非常经典的各种模块介
    翻译: Python 江湖群 10/06/07 20:10:08 编译 0.1. 关于本书0.2. 代码约定0.3. 关于例子0.4. 如何联系我们 核心模块 1.1. 介绍1.2. _ _builtin_ _ 模块1....
    99+
    2023-01-31
    模块 标准 经典
  • python cx_Oracle模块的安装和使用详细介绍
    python cx_Oracle模块的安装 最近需要写一个数据迁移脚本,将单一Oracle中的数据迁移到MySQL Sharding集群,在linux下安装cx_Oracle感觉还是有一点麻烦的,整理一下,...
    99+
    2022-06-04
    详细介绍 模块 python
  • Node.js模块化的使用详细介绍
    目录什么是模块化编程领域中的模块化模块化规范Node.js中的模块化加载模块Node.js中的模块作用域1. 什么是模块作用域2. 模块作用域的好处向外共享模块作用域中的成员1. m...
    99+
    2022-11-13
  • python标准库学习之sys模块详解
    目录前言处理命令行参数sys.exit(n) 退出程序,正常退出时exit(0)sys.version 获取Python解释程序的版本信息sys.platform 返回操作系统平台名...
    99+
    2022-11-11
  • 详解Python常用标准库之os模块与shutil模块
    目录系统模块常用方法常用属性文件操作路径模块文件复制移动模块(文件操作)copyfileobj -- 复制文件(内容)copyfile -- 复制文件(内容)copymode -- ...
    99+
    2022-11-11
  • python标准库压缩包模块zipfile和tarfile详解(常用标准库)
    目录常用的标准库zip格式ZipFile参数说明操作含义压缩方法常用方法tar包 和 gz、bz2、xz格式删除压缩包中的文件常用的标准库 在我们常用的系统windows和Linux...
    99+
    2022-11-11
  • Python的标准模块包json详解
    引言 对于做web开发的人来说,json文本必须要熟知与熟练使用的。大部分网站的API接口调用返回的数据,就是json格式的。如果看json对象所包含的内容,相信对熟悉Python的人开说,很快就能把jso...
    99+
    2022-06-04
    详解 模块 标准
  • Python标准库之Math,Random模块使用详解
    目录数学模块ceil -- 上取整floor -- 下取整四舍五入pow -- 幂运算sqrt -- 开平方运算fabs -- 绝对值modf -- 拆分整数小数copysign -...
    99+
    2022-11-11
  • Python标准库uuid模块(生成唯一标识)详解
    目录UUID格式组成Python 中的uuid 模块uuid1() 中的getnode()UUID实际应用UUID 的劣势参考资料:总结UUID (Universally Uniqu...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作