前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python 基础(八):与时间相关的模块

Python 基础(八):与时间相关的模块

作者头像
Python小二
发布于 2020-08-18 01:33:05
发布于 2020-08-18 01:33:05
1.4K00
代码可运行
举报
文章被收录于专栏:Python小二Python小二
运行总次数:0
代码可运行

1 time 模块

time 模块提供了很多与时间相关的类和函数,下面我们介绍一些常用的。

1.1 struct_time 类

time 模块的 struct_time 类代表一个时间对象,可以通过索引和属性名访问值。对应关系如下所示:

索引

属性

0

tm_year(年)

如:1945

1

tm_mon(月)

1 ~ 12

2

tm_mday(日)

1 ~ 31

3

tm_hour(时)

0 ~ 23

4

tm_min(分)

0 ~ 59

5

tm_sec(秒)

0 ~ 61

6

tm_wday(周)

0 ~ 6

7

tm_yday(一年内第几天)

1 ~ 366

8

tm_isdst(夏时令)

-1、0、1

tm_sec 范围为 0 ~ 61,值 60 表示在闰秒的时间戳中有效,并且由于历史原因支持值 61。

localtime() 表示当前时间,返回类型为 struct_time 对象,示例如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import time
t = time.localtime()
print('t-->', t)
print('tm_year-->', t.tm_year)
print('tm_year-->', t[0])

输出结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
t--> time.struct_time(tm_year=2019, tm_mon=12, tm_mday=1, tm_hour=19, tm_min=49, tm_sec=54, tm_wday=6, tm_yday=335, tm_isdst=0)
tm_year--> 2019
tm_year--> 2019

1.2 常用函数

函数(常量)

说明

time()

返回当前时间的时间戳

gmtime([secs])

将时间戳转换为格林威治天文时间下的 struct_time,可选参数 secs 表示从 epoch 到现在的秒数,默认为当前时间

localtime([secs])

与 gmtime() 相似,返回当地时间下的 struct_time

mktime(t)

localtime() 的反函数

asctime([t])

接收一个 struct_time 表示的时间,返回形式为:Mon Dec 2 08:53:47 2019 的字符串

ctime([secs])

ctime(secs) 相当于 asctime(localtime(secs))

strftime(format[, t])

格式化日期,接收一个 struct_time 表示的时间,并返回以可读字符串表示的当地时间

sleep(secs)

暂停执行调用线程指定的秒数

altzone

本地 DST 时区的偏移量,以 UTC 为单位的秒数

timezone

本地(非 DST)时区的偏移量,UTC 以西的秒数(西欧大部分地区为负,美国为正,英国为零)

tzname

两个字符串的元组:第一个是本地非 DST 时区的名称,第二个是本地 DST 时区的名称

epoch:1970-01-01 00:00:00 UTC

基本使用如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import time

print(time.time())
print(time.gmtime())
print(time.localtime())
print(time.asctime(time.localtime()))
print(time.tzname)
# strftime 使用
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))

strftime 函数日期格式化符号说明如下所示:

符号

说明

%a

本地化的缩写星期中每日的名称

%A

本地化的星期中每日的完整名称

%b

本地化的月缩写名称

%B

本地化的月完整名称

%c

本地化的适当日期和时间表示

%d

十进制数 [01,31] 表示的月中日

%H

十进制数 [00,23] 表示的小时(24小时制)

%I

十进制数 [01,12] 表示的小时(12小时制)

%j

十进制数 [001,366] 表示的年中日

%m

十进制数 [01,12] 表示的月

%M

十进制数 [00,59] 表示的分钟

%p

本地化的 AM 或 PM

%S

十进制数 [00,61] 表示的秒

%U

十进制数 [00,53] 表示的一年中的周数(星期日作为一周的第一天)

%w

十进制数 [0(星期日),6] 表示的周中日

%W

十进制数 [00,53] 表示的一年中的周数(星期一作为一周的第一天)

%x

本地化的适当日期表示

%X

本地化的适当时间表示

%y

十进制数 [00,99] 表示的没有世纪的年份

%Y

十进制数表示的带世纪的年份

%z

时区偏移以格式 +HHMM 或 -HHMM 形式的 UTC/GMT 的正或负时差指示,其中 H 表示十进制小时数字,M 表示小数分钟数字 [-23:59, +23:59]

%Z

时区名称

%%

字面的 '%' 字符

2 datetime 模块

datatime 模块重新封装了 time 模块,提供了更多接口,变得更加直观和易于调用。

2.1 date 类

date 类表示一个由年、月、日组成的日期,格式为:datetime.date(year, month, day)。

  • year 范围为:[1, 9999]
  • month 范围为:[1, 12]
  • day 范围为 [1, 给定年月对应的天数]。

类方法和属性如下所示:

方法(属性)

说明

today()

返回当地的当前日期

fromtimestamp(timestamp)

根据给定的时间戮,返回本地日期

min

date 所能表示的最小日期

max

date 所能表示的最大日期

使用示例如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import datetime
import time

print(datetime.date.today())
print(datetime.date.fromtimestamp(time.time()))
print(datetime.date.min)
print(datetime.date.max)

实例方法和属性如下所示:

方法(属性)

说明

replace(year, month, day)

生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性

timetuple()

返回日期对应的 struct_time 对象

weekday()

返回一个整数代表星期几,星期一为 0,星期天为 6

isoweekday()

返回一个整数代表星期几,星期一为 1,星期天为 7

isocalendar()

返回格式为 (year,month,day) 的元组

isoformat()

返回格式如 YYYY-MM-DD 的字符串

strftime(format)

返回自定义格式的字符串

year

month

day

使用示例如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import datetime

td = datetime.date.today()
print(td.replace(year=1945, month=8, day=15))
print(td.timetuple())
print(td.weekday())
print(td.isoweekday())
print(td.isocalendar())
print(td.isoformat())
print(td.strftime('%Y %m %d %H:%M:%S %f'))
print(td.year)
print(td.month)
print(td.day)

2.2 time 类

time 类表示由时、分、秒、微秒组成的时间,格式为:time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)。

  • hour 范围为:[0, 24)
  • minute 范围为:[0, 60)
  • second 范围为:[0, 60)
  • microsecond 范围为:[0, 1000000)
  • fold 范围为:[0, 1]

实例方法和属性如下所示:

方法(属性)

说明

isoformat()

返回 HH:MM:SS 格式的字符串

replace(hour, minute, second, microsecond, tzinfo, * fold=0)

创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性

strftime(format)

返回自定义格式的字符串

hour

minute

second

microsecond

微秒

tzinfo

时区

使用示例如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import datetime

t = datetime.time(10, 10, 10)
print(t.isoformat())
print(t.replace(hour=9, minute=9))
print(t.strftime('%I:%M:%S %p'))
print(t.hour)
print(t.minute)
print(t.second)
print(t.microsecond)
print(t.tzinfo)

2.3 datetime 类

datetime 包括了 date 与 time 的所有信息,格式为:datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0),参数范围值参考 date 类与 time 类。

类方法和属性如下所示:

方法(属性)

说明

today()

返回当地的当前时间

now(tz=None)

类似于 today(),可选参数 tz 可指定时区

utcnow()

返回当前 UTC 时间

fromtimestamp(timestamp, tz=None)

根据时间戳返回对应时间

utcfromtimestamp(timestamp)

根据时间戳返回对应 UTC 时间

combine(date, time)

根据 date 和 time 返回对应时间

min

datetime 所能表示的最小日期

max

datetime 所能表示的最大日期

使用示例如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import datetime

print(datetime.datetime.today())
print(datetime.datetime.now())
print(datetime.datetime.utcnow())
print(datetime.datetime.fromtimestamp(time.time()))
print(datetime.datetime.utcfromtimestamp(time.time()))
print(datetime.datetime.combine(datetime.date(2019, 12, 1), datetime.time(10, 10, 10)))
print(datetime.datetime.min)
print(datetime.datetime.max)

实例方法和属性如下所示:

方法(属性)

说明

date()

返回具有同样 year,month,day 值的 date 对象

time()

返回具有同样 hour, minute, second, microsecond 和 fold 值的 time 对象

replace(year, month, day=self.day, hour, minute, second, microsecond, tzinfo, * fold=0)

生成一个新的日期对象,用参数指定的年,月,日,时,分,秒...代替原有对象中的属性

weekday()

返回一个整数代表星期几,星期一为 0,星期天为 6

isoweekday()

返回一个整数代表星期几,星期一为 1,星期天为 7

isocalendar()

返回格式为 (year,month,day) 的元组

isoformat()

返回一个以 ISO 8601 格式表示日期和时间的字符串 YYYY-MM-DDTHH:MM:SS.ffffff

strftime(format)

返回自定义格式的字符串

year

month

day

hour

minute

second

microsecond

微秒

tzinfo

时区

使用示例如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import datetime

td = datetime.datetime.today()
print(td.date())
print(td.time())
print(td.replace(day=11, second=10))
print(td.weekday())
print(td.isoweekday())
print(td.isocalendar())
print(td.isoformat())
print(td.strftime('%Y-%m-%d %H:%M:%S .%f'))
print(td.year)
print(td.month)
print(td.month)
print(td.hour)
print(td.minute)
print(td.second)
print(td.microsecond)
print(td.tzinfo)

3 calendar 模块

calendar 模块提供了很多可以处理日历的函数。

3.1 常用函数

方法

说明

setfirstweekday(weekday)

设置每一周的开始(0 表示星期一,6 表示星期天)

firstweekday()

返回当前设置的每星期的第一天的数值

isleap(year)

如果 year 是闰年则返回 True ,否则返回 False

leapdays(y1, y2)

返回 y1 至 y2 (包含 y1 和 y2 )之间的闰年的数量

weekday(year, month, day)

返回指定日期的星期值

monthrange(year, month)

返回指定年份的指定月份第一天是星期几和这个月的天数

month(theyear, themonth, w=0, l=0)

返回月份日历

prcal(year, w=0, l=0, c=6, m=3)

返回年份日历

使用示例如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import calendar

calendar.setfirstweekday(1)
print(calendar.firstweekday())
print(calendar.isleap(2019))
print(calendar.leapdays(1945, 2019))
print(calendar.weekday(2019, 12, 1))
print(calendar.monthrange(2019, 12))
print(calendar.month(2019, 12))
print(calendar.prcal(2019))

3.2 Calendar 类

Calendar 对象提供了一些日历数据格式化的方法,实例方法如下所示:

方法

说明

iterweekdays()

返回一个迭代器,迭代器的内容为一星期的数字

itermonthdates(year, month)

返回一个迭代器,迭代器的内容为年 、月的日期

使用示例如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from calendar import Calendar

c = Calendar()
print(list(c.iterweekdays()))
for i in c.itermonthdates(2019, 12):
    print(i)

3.3 TextCalendar 类

TextCalendar 为 Calendar子类,用来生成纯文本日历。实例方法如下所示:

方法

说明

formatmonth(theyear, themonth, w=0, l=0)

返回一个多行字符串来表示指定年、月的日历

formatyear(theyear, w=2, l=1, c=6, m=3)

返回一个 m 列日历,可选参数 w, l, 和 c 分别表示日期列数, 周的行数, 和月之间的间隔

使用示例如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from calendar import TextCalendar

tc = TextCalendar()
print(tc.formatmonth(2019, 12))
print(tc.formatyear(2019))

3.4 HTMLCalendar类

HTMLCalendar 类可以生成 HTML 日历。实例方法如下所示:

方法

说明

formatmonth(theyear, themonth, withyear=True)

返回一个 HTML 表格作为指定年、月的日历

formatyear(theyear, width=3)

返回一个 HTML 表格作为指定年份的日历

formatyearpage(theyear, width=3, css='calendar.css', encoding=None)

返回一个完整的 HTML 页面作为指定年份的日历

使用示例如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from calendar import HTMLCalendar

hc = HTMLCalendar()
print(hc.formatmonth(2019, 12))
print(hc.formatyear(2019))
print(hc.formatyearpage(2019))

参考:

https://docs.python.org/zh-cn/3.7/library/time.html#time.process_time

https://docs.python.org/zh-cn/3.7/library/datetime.html?highlight=datetime#module-datetime

https://docs.python.org/zh-cn/3.7/library/calendar.html?highlight=calendar#module-calendar

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小二 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python时间模块那些事
python有三大时间模块,分别是time,datetime,calendar,今天来学习下
披头
2020/04/26
1.3K0
Python标准库:超棒的 "时间序列" 处理模块,4大常用时间类,用了的都说好!
为了灵活的处理时间,Python中提供了一个非常好用的datetime模块,这个库里面主要有4个常用类,分别为大家先简单介绍一下:
快学Python
2021/08/09
1.7K0
Python的datetime时间、日期处理模块详解
Python中提供了多个用于对日期和时间进行操作的内置模块:time模块、datetime模块和calendar模块。其中time模块是通过调用C库实现的,所以有些方法在某些平台上可能无法调用,但是其提供的大部分接口与C标准库time.h基本一致。time模块相比,datetime模块提供的接口更直观、易用,功能也更加强大。
程序员洲洲
2024/06/07
1570
Python的datetime时间、日期处理模块详解
#小手一抬学Python# 玩转时间和日期库【附源码】
在 Python 中是没有原生数据类型支持时间的,日期与时间的操作需要借助三个模块,分别是 time、datetime、calendar。
程序员迪迪
2021/12/28
7300
Python基础模块:日期与时间模块@time+datetime
终于,回家之后准备好好学习一下,从python基础模块开始,今天为大家准备的是python的日期与时间处理模块time和datetime。
可以叫我才哥
2021/08/05
1.6K0
一文搞定Python中的时间转化
不同的情况会遇到不同的时间问题:具体时间点、时间间隔、星期等,无时不刻我们在和时间碰撞。本文将利用Python对时间相关的类,及其方法与属性等进行详细的讲解
皮大大
2020/12/28
1.9K0
一文搞定Python中的时间转化
Python标准库笔记(3) — datetime模块
目录[-] datetime模块提供了简单和复杂的方式用于操纵日期和时间的类。虽然支持日期和时间运算,但实现的重点是为了输出格式化和操作高效地提取属性。 1. 模块内容 内容 描述 常量 datetime.MINYEAR date和datetime对象允许的最小年份 datetime.MAXYEAR date和datetime对象允许的最大年份 类 datetime.date 日期对象,属性(year, month, day) datetime.time 时间
jhao104
2018/03/20
1.3K0
python3:常用模块
` datetime.today(): 返回当前本地datetime.随着 tzinfo None. datetime.fromtimestamp(time.time()). datetime.now([tz]): 返回当前本地日期和时间, 如果可选参数tz为None或没有详细说明,这个方法会像today(). datetime.utcnow(): 返回当前的UTC日期和时间, 如果tzinfo None ,那么与now()类似. datetime.fromtimestamp(timestamp[, tz]): 根据时间戳返回本地的日期和时间.tz指定时区. datetime.utcfromtimestamp(timestamp): 根据时间戳返回 UTC datetime. datetime.fromordinal(ordinal): 根据Gregorian ordinal 返回datetime. datetime.combine(date, time): 根据date和time返回一个新的datetime. datetime.strptime(date_string, format): 根据date_string和format返回一个datetime.
py3study
2020/01/10
8080
Python3: datetime模块
datetime.date: 表示日期的类,常用的属性有year, month, day;
py3study
2020/01/06
1.3K0
干货!这可能是你见过最全的 Python 时间处理方法总结
不同的情况会遇到不同的时间问题:具体时间点、时间间隔、星期等,无时不刻我们在和时间碰撞。本文将利用Python对时间相关的类,及其方法与属性等进行详细的讲解
小小詹同学
2021/01/22
1.1K0
干货!这可能是你见过最全的 Python 时间处理方法总结
python时间与日期处理一次看个够(time、datetime、calendar)
python中常常会遇见时间、日期相关的处理,python标准库其实就提供了非常强大的处理能力,它们是time、datetime、calendar标准库,下面是它们常见的一些用法,一起来看看吧!
小草AI
2019/05/31
2.4K0
python datetime模块参数详解
Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime。time模块,它提供 的接口与C标准库time.h基本一致。相比于time模块,datetime模块的接口则更直观、更容易调用。     datetime模块定义了两个常量:datetime.MINYEAR和datetime.MAXYEAR,分别表示datetime所能表示的最 小、最大年份。其中,MINYEAR = 1,MAXYEAR = 9999。     datetime模块定义了下面这几个类: datet
程序员同行者
2018/06/22
1.8K0
30例 | 一文搞懂python日期时间处理
本文旨在讲解datetime模块中datetime类的使用方法。datetime对象是 date 与 time 的结合体,涵盖了date和time对象的所有信息。
派大星的数据屋
2022/04/02
5420
超全!Python 处理日期与时间的全面总结!
https://www.biaodianfu.com/python-datetime.html
小F
2021/10/08
2.7K0
Python3内置模块使用
(1)内置模块一览表 描述:模块是一个包含所有您定义的函数和变量的文件其后缀名为.py,模块可以被失败引入的以使用该模块中的函数等功能。
全栈工程师修炼指南
2020/10/23
1.8K0
Python3内置模块使用
python学习笔记7.2-内建模块datetime
Datetime类是Python内建的一个关于时间的类,包含有两种数据类型,datetime类型和timestamp类型,前者是本地时间类,与自己所在时区有关;在计算机中,时间实际上是用数字表示的。我
锦小年
2018/01/02
1.3K0
【Python datetime模块精讲】:时间旅行者的日志,精准操控日期与时间
Python的datetime模块提供了日期和时间的类,用于处理日期和时间的算术运算。这个模块包括date、time、datetime和timedelta等类,以及tzinfo接口和timezone类。date类用于表示年、月、日,而time类表示时间。datetime类结合了日期和时间,提供了一个单一的日期时间对象。timedelta类用于表示两个日期或时间之间的差异。此外,tzinfo接口允许用户定义时区信息,而timezone类提供了时区的实现。datetime模块广泛用于需要日期和时间计算的应用程序,如日志记录、调度和数据时间戳。它的强大功能和灵活性使其成为Python标准库中不可或缺的一部分。
爱喝兽奶的熊孩子
2024/06/28
2630
【Python datetime模块精讲】:时间旅行者的日志,精准操控日期与时间
Python时间处理模块的常用选择:八大模块,万字长文
时间格式是数据类型中基础也不容忽视的一类。不像整数那样大道至简也不像字符串那样包罗万象,却独有魅力,时间数据本身除了加减、比较运算外,也有下周、去年、时区等更专项的时间切换。在各类编程语言里都提供时间对象的支持,在MySQL里也有DATETIME类型。商业里的DAU、GMV、LTV也少不了时间限定和时间属性,因此数据分析时少不了对时间数据类型的处理与转换。
蛰虫始航
2020/12/30
2.7K0
Python时间处理模块的常用选择:八大模块,万字长文
python-for-data-3大时间序列
时间序列在很多的领域都是重要的结构化数据形式,例如经济学、金融、生态学、物理学等,其特点是:
皮大大
2021/03/01
1.8K0
python-for-data-3大时间序列
python常用内建模块之time、date、datetime
Python的time和datetime模块提供了时间日期工具, python中的时间有4种表示方式:
菲宇
2019/06/13
2.4K0
推荐阅读
相关推荐
Python时间模块那些事
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验