我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python日期与时间模块(datetime+time+Calendar+dateuil )相关使用讲解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python日期与时间模块(datetime+time+Calendar+dateuil )相关使用讲解

1 前言

在开发中经常会遇到查询日期、时间、时间戳,或者日期比较等相关操作,为了方便以后使用,本文将对python操作时间的各种操作做出总结。

时间戳: 即以整型或浮点型表示的是一个以秒为单位的时间间隔。这个时间的基础值是从1970年的1月1号零点开始算起。

2 datetime 模块

此模块常用类有:date、time、datetime、timedelta

导入:

from datetime import *

2.1 date类

获取当前日期:

from datetime import *

dt = date.today()
print(dt)		# 输出:2022-09-07

print(dt.year)          # 2022
print(dt.month)
print(dt.day)

# 返回星期几  星期一 = 0
print(dt.weekday())             # 输出:2
# 返回星期几  星期一 = 1
print(dt.isoweekday())          # 0001-01-01

# 返回 ctime() 样式字符串
print(dt.ctime())               # Wed Sep  7 00:00:00 2022
# 修改 年、月、日
print(dt.replace(year=2023))    # 输出:2023-09-07
# 打印最大/最小日期
print(dt.max)                   # 9999-12-31
print(dt.min)                   # 0001-01-01

使用date类的构造函数,初始化变量

d = date(2022, 9, 6)
print(d)			# 输出:2022-09-06

字符串初始化为date

d = date.fromisoformat("2022-09-06")
print(d)        # 2022-09-06
print(type(d))  # <class 'datetime.date'>

时间戳 转 date对象

d = date.fromtimestamp(1662451516)
print(d)    	# 2022-09-06

date 转 字符串

d = date.today()
str_date = d.isoformat()
print(str_date)          # 2022-09-06 字符串

2.2 time类

from datetime import time

t1 = time(10, 20, 32)
print(t1)   # 输出:10:20:32

# 打印时分秒
print(t1.hour)
print(t1.minute)
print(t1.second)

# 将对象转为字符串
res = time.isoformat(t1)
# print(t1.isoformat()) # 方式2
print(res)              # 输出:10:20:32
print(type(res))        # 输出:<class 'str'>

2.3 datetime类

from datetime import datetime

# datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])
t = datetime(2022, 9, 7, 20, 32, 20)
print(t)

# 打印 年月日 时分秒
print(t.year)
print(t.month)
print(t.day)
print(t.hour)
print(t.minute)
print(t.second)

# 获取当前时间
today = datetime.now()
print(today)

# 字符串转为datetime
d = datetime.fromisoformat("2022-09-10 12:25:36")
print(type(d))	# <class 'datetime.datetime'>

2.4 timedelta类

主要用于计算日期差异,或者日期相关操作

2.4.1 时间增加

from datetime import datetime, timedelta

now = datetime.now()
print(now)

# 加2天
# def __new__(cls, days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
new_time = now + timedelta(days=2)
print(new_time.strftime("%Y-%m-%d %H:%M:%S"))

# 加1周
new_time = now + timedelta(weeks=1)
print(new_time.strftime("%Y-%m-%d %H:%M:%S"))

2.4.2 计算时间差

from datetime import datetime, date

# 计算时间差
now = datetime.now()
# 将字符串转为<class 'datetime.datetime'>
d = datetime.fromisoformat("2022-09-10 12:25:36")
res = d - now
print(res)
print(res.days)
print(res.seconds)

2.5 datetime格式化

from datetime import datetime, date

now = datetime.now()
print(now)
print(now.strftime("%Y-%m-%d %H:%M:%S"))
print(now.strftime("%y-%m-%d %H:%M:%S %A"))

符号描述
%y两位数的年份表示(00-99)
%Y四位数的年份表示(0000-9999)
%m月份(01-12)
%d月内的天(0-31)
%H24h值小时数(0-23)
%I12小时小时数
%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),星期天为星期的开始
%W一年中的星期数(0-53)星期一位星期的开始
%x本地相应的日期表示
%X本地相应的事假表示
%Z当前时区的名称
%%%号本身

3 time 标准库

元组表示法:以Python的数据结构表示,共有9个。

属性描述
tm_year
tm_mon月(1-12)
tm_mday日(1-31)
tm_hour时(0-23)
tm_min分(0-59)
tm_sec秒(0-59)
tm_wday0-6(0表示周日)
tm_yday1-366(一年中的第几天)
tm_isdst默认为-1(是否为夏令时)

3.1 时间操作

import time

# 当前timestamp
timestamp = time.time()
print(timestamp)

# 时间戳 转 时间元组
# 方式1:time.struct_time(tm_year=2022, tm_mon=9, tm_mday=10, tm_hour=16, tm_min=11, tm_sec=30, tm_wday=3, tm_yday=251, tm_isdst=0)
time_tuple1 = time.localtime()
# 方式2
time_tuple2 = time.localtime(timestamp)
print(time_tuple1)
print(time_tuple2)

# 时间元组 转 时间戳
timestamp2 = time.mktime(time_tuple1)
print(timestamp2)  # 1662624690.0

# 时间元组 格式化为 时间
strftime1 = time.strftime("%Y-%m-%d %H:%M:%S", time_tuple1)
print(strftime1)
# 时间 格式化为 时间元组
time_tuple3 = time.strptime("2022-09-10 16:14:18", "%Y-%m-%d %H:%M:%S")
print(time_tuple3)

# 返回一个可读的时间字符串
print(time.ctime())               # Thu Sep  10 16:17:40 2022
print(time.ctime(time.time()))    # Thu Sep  10 16:17:40 2022

print(time.asctime())
print(time.asctime(time.localtime()))

3.2 程序睡眠

程序睡眠:

# 程序暂停/睡眠3s
time.sleep(3)

4 Calendar 日历模块

打印日历:

import calendar

cal = calendar.month(2022,9)
print(cal)  # str
"""
   September 2022
Mo Tu We Th Fr Sa Su
          1  2  3  4
 5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
"""

闰年相关:

import calendar

# 判断是否为闰年
print(calendar.isleap(2000))  # True
print(calendar.isleap(2022))  # False

# 查看2个年份之间的闰年总和
print(calendar.leapdays(2008, 2060))  # 13

5 dateuil 日期模块

安装:

pip install dateutils
from datetime import datetime, date
from dateutil.relativedelta import relativedelta, MO, TU, WE, TH, FR, SA, SU

now = datetime.now()
today = date.today()
print(now)
print(today)

"""
    时间增加
    dt1=None, dt2=None,
    years=0, months=0, days=0, leapdays=0, weeks=0,
    hours=0, minutes=0, seconds=0, microseconds=0,
    year=None, month=None, day=None, weekday=None,
    yearday=None, nlyearday=None,
    hour=None, minute=None, second=None, microsecond=None
"""
# 下个月
next_month = now + relativedelta(months=1)
print(next_month)

# 一年后 前一个月
next_year_prev_month = now + relativedelta(years=1, months=-1)
print(next_year_prev_month)

# 下周五(前提是今天为周六、周天)
next_fr = now + relativedelta(weekday=FR)
print(next_fr)

# 计算两个日期差
res = relativedelta(date(2060, 6, 20), today)
print(res)          # relativedelta(years=+37, months=+9, days=+12)
print(res.years)    # 37

到此这篇关于Python日期与时间模块(datetime+time+Calendar+dateuil )相关使用讲解的文章就介绍到这了,更多相关Python时间模块 内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python日期与时间模块(datetime+time+Calendar+dateuil )相关使用讲解

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

下载Word文档

猜你喜欢

Python时间模块datetime、time、calendar的使用方法

本文简单总结了一下Python处理时间和日期方面的模块,主要就是datetime、time、calendar三个模块的使用,希望这篇文章对于学习Python的朋友们有所帮助。 首先就是模块的调用,很多IDE都已经安装好了很多Python经常
2022-06-04

Python时间模块time()与datetime()怎么使用

这篇“Python时间模块time()与datetime()怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Pytho
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录