【python常用模块之time时间模块】---时间模块(time/datetime)
1.【python入门之相关语言了解】---开发语言与其他2.【python入门之pycharm篇】--如何安装pycharm以及如何安装python解释器3.【python工具指南】pycharm相关快捷键---windows+mac合集4.【python入门之pip换源问题】---pip换源的方式5.【python小记】---PE8规范简述6.【python入门之虚拟环境与系统环境】---虚拟环境的创建方式及使用7.【python入门之常量与变量】---常量与变量小记8.【python入门之基本数据类型的学习】---基本数据之数字类型9.【python入门之基本数据类型的学习】---基本数据类型(列表、字符串)【二】10.【python入门之基本数据类型】---基本数据类型(字典、布尔)【三】11.【python入门之基本数据类型】---基本数据类型(元组、集合)【四】12.【python入门之程序与用户交互】---程序与用户交互13.【python入门之基本运算符】---基本运算符14.【python入门之流程控制语句】---流程控制语句15.【python入门之垃圾回收机制】---python 垃圾回收机制16.【python入门之文件操作】---文件操作17.【python入门之文字符编码】---字符编码18.【python基础之可变和不可变数据类型】---python之栈的介绍19.【python基础之可变和不可变数据类型】--- python之堆的介绍20.【python基础之可变和不可变数据类型】--- python堆栈的相关应用21.【python基础之数据类型的内置方法】--- 数据类型的内置方法22.【python入门之深浅拷贝】---python 深浅拷贝23.【python入门之异常处理】---python 异常处理24.【python基础之函数】--- 函数入门25.【python基础之命名空间与作用域】---命名空间与作用域26.【python基础之函数对象和闭包】 --- 函数对象与闭包27.【python基础之装饰器】---装饰器28.【python基础之迭代器】 --- 迭代器29.【python基础之三元表达式】--- 三元表达式30.【python基础之列表生成式】---列表生成式31.【python基础之生成器】---生成器32.【python基础之模块介绍】---模块33.【python基础之包介绍】---包34.【python扩展之软件开发目录规范】---软件开发目录规范35.【python常用模块之OS模块简介】---OS模块36.【python常用模块之random模块简介】---random模块
37.【python常用模块之time时间模块】---时间模块(time/datetime)
38.【python常用模块之subprocess模块】---subprocess模块39.【python常用模块之sys模块】---系统模块(sys)40.【Python常用模块之logging模块】---日志输出功能(示例代码)41.【python--- ATM+SHOPPING】42.【python基础之面向对象介绍】--- 面向对象43.【python基础之面向对象的绑定方法与非绑定方法】--面向对象的绑定方法与非绑定方法44.【python网络编程相关】 ----操作系统相关了解45.【python之DRF学习】DRF入门了解46.【python之DRF学习】三大方法之认证47.【python之接口工具】利用docker-compose搭建Yapi48.【python之DRF学习】drf全局异常49.【python之DRF学习】 drf之接口文档介绍及使用50.【python之DRF学习】drf之jwt使用【一】时间模块(time/datetime)
【二】表示时间的三种方式
- 在Python中,通常有这三种方式来表示时间:
- 时间戳
- 元组(struct_time)
- 格式化的时间字符串:
- 格式化的时间字符串(Format String): ‘1999-12-06’
【三】time
(1)导入时间模块
import time
(2)时间戳(time)
[1]生成时间戳
import time
# 生成时间戳 , 时间戳是浮点数类型
time_str = time.time()
print(time_str, type(time_str))
# 1700832484.27306 <class 'float'>
- 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
- 时间戳是使用数字签名技术产生的数据,签名的对象包括了原始文件信息、签名参数、签名时间等信息。
- 时间戳系统用来产生和管理时间戳,对签名对象进行数字签名产生时间戳,以证明原始文件在签名时间之前已经存在。
[2]时间戳转换为时间元组(UTC时间)
- 将时间戳转换为UTC时间,与英国伦敦当地时间一致
import time
# 生成时间戳
time_str = time.time()
# 时间戳转换为时间元组类型(UTC时间 --- 英国伦敦当地时间)
print(time.gmtime(time_str))
# time.struct_time(tm_year=2023, tm_mon=11, tm_mday=24, tm_hour=13, tm_min=29, tm_sec=26, tm_wday=4, tm_yday=328, tm_isdst=0)
[3]时间戳转换为时间元组(当地时间)
- 当地时间。例如我们现在在北京执行这个方法:与UTC时间相差8小时,UTC时间+8小时 = 北京时间
import time
# 生成时间戳
time_str = time.time()
# 时间戳转换为时间元组类型(当地时间)
print(time.localtime(time_str))
# time.struct_time(tm_year=2023, tm_mon=11, tm_mday=24, tm_hour=21, tm_min=30, tm_sec=54, tm_wday=4, tm_yday=328, tm_isdst=0)
(3)时间字符串(strftime)
import time
time_now = time.strftime("%Y-%m-%d %X")
print(time_now)
# 2023-11-24 21:21:17
time_now_new = time.strftime("%Y-%m-%d %H-%M-%S")
print(time_now_new)
# 2023-11-24 21-21-17
- Python中时间日期格式化符号
符号 | 含义 | 值 |
---|---|---|
%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),星期天为星期的开始 |
%W | 一年中的星期数 | (00-53)星期一为星期的开始 |
%x | 本地相应的日期表示 | |
%X | 本地相应的时间表示 | |
%Z | 当前时区的名称 | |
%% | %号本身 |
(4)时间元组(struct_time)
- localtime将一个时间戳转换为当前时区的struct_time
import time
data_time = time.localtime()
# 查看元组形式的时间
print(data_time)
# time.struct_time(tm_year=2023, tm_mon=6, tm_mday=2, tm_hour=10, tm_min=10, tm_sec=37, tm_wday=4, tm_yday=153, tm_isdst=0)
# 可以通过直接 `.` 取每个值
print(data_time.tm_year) # 获取到当前年
# 2023
# 可以通过索引取每个单独的值
print(data_time[0]) # 获取到元组索引为0的元素
# 2023
- struct_time 元组共有9个元素共九个元素:
- (年,月,日,时,分,秒,一年中第几周,一年中第几天等)
索引(Index) | 属性(Attribute) | 值(Values) |
---|---|---|
0 | (年) | 比如2023 |
1 | tm_mon(月) | 1 - 12 |
2 | tm_mday(日) | 1 - 31 |
3 | tm_hour(时) | 0 - 23 |
4 | tm_min(分) | 0 - 59 |
5 | tm_sec(秒) | 0 - 60 |
6 | tm_wday(weekday) | 0 - 6(0表示周一) |
7 | tm_yday(一年中的第几天) | 1 - 366 |
8 | tm_isdst(是否是夏令时) | 默认为0 |
(5)结构化时间
[1]time.mktime(时间戳-->元组时间戳)
import time
print(time.time()) # 1700833503.6196976
time_tuple = time.localtime(time.time())
time_str = time.mktime(time_tuple)
print(time_str) # 1700833503.0
[2]time.strftime(结构化时间-->时间字符串)
- 结构化时间参数若不传,则显示当前时间
import time
# 格式化当前时间
time_str = time.strftime("%Y-%m-%d %X")
print(time_str) # 2023-11-24 21:47:28
print(time.localtime(time.time()))
# time.struct_time(tm_year=2023, tm_mon=11, tm_mday=24, tm_hour=21, tm_min=48, tm_sec=13, tm_wday=4, tm_yday=328, tm_isdst=0)
# 格式化当前时间元组
time_local = time.strftime("%Y-%m-%d", time.localtime(time.time()))
print(time_local) # 2023-11-24
[3]time.strptime(时间字符串-->时间元组)
import time
time_str = time.strptime("2023-11-24", "%Y-%m-%d")
print(time_str)
# time.struct_time(tm_year=2023, tm_mon=11, tm_mday=24, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=328, tm_isdst=-1)
time_local = time.strptime("11/24/2023", "%m/%d/%Y")
print(time_local)
# time.struct_time(tm_year=2023, tm_mon=11, tm_mday=24, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=328, tm_isdst=-1)
[4]time.asctime(结构化时间--> %a %b %d %H:%M:%S %Y串)
- time.asctime(结构化时间)
- 如果不传参数,直接返回当前时间的格式化串
import time
time_str = time.asctime(time.localtime(time.time()))
print(time_str)
# Fri Nov 24 21:53:46 2023
time_local = time.asctime()
print(time_local)
# Fri Nov 24 21:53:46 2023
- time.ctime(时间戳)
- 时间戳 --> %a %b %d %H:%M:%S %Y串
- 如果不传参数,直接返回当前时间的格式化串
import time
time_str = time.ctime(time.time())
print(time_str)
# Fri Nov 24 21:55:46 2023
time_local = time.ctime()
print(time_local)
# Fri Nov 24 21:55:46 2023
(6)小结
- 时间戳是计算机能够识别的时间;
- 时间字符串是人能够看懂的时间;
- 元组则是用来操作时间的
【四】datetime
(1)导入模块
import datetime
(2)自定义日期并格式化
import datetime
res = datetime.date(2023, 11, 24)
print(res) # 2023-11-24
(3)获取本地时间
[1]年月日
import datetime
now_date = datetime.date.today()
print(now_date)
# 2023-11-24
[2]年月日时分秒
import datetime
now_time = datetime.datetime.today()
print(now_time)
# 2023-11-24 21:58:59.333879
-
无论是年月日,还是年月日时分秒对象
-
都可以调用以下方法获取针对性的数据
- 以datetime对象举例
import datetime # 获取当日的日期 now_time = datetime.datetime.today() print(now_time) # 2023-11-24 22:01:31.956273 # 获取年份 print(now_time.year) # 2023 # 获取月份 print(now_time.month) # 11 # 获取日 print(now_time.day) # 24 # 获取星期(weekday星期是0-6) 0表示周一 print(now_time.weekday()) # 4 # 获取星期(weekday星期是1-7) 1表示周一 print(now_time.isoweekday()) # 5
(4)timedelta对象
[1]打印时间增减
import datetime
# 操作时间 : 对时间对象加减
t_day = datetime.timedelta(days=7)
print(t_day)
# 7 days, 0:00:00
t_day = datetime.timedelta(days=6)
print(t_day)
# 6 days, 0:00:00
[2]推迟日期
import datetime
# 获取本地年月日
today = datetime.date.today()
print(today)
# 2023-11-24
# 打印今天的日期
print('今天的日期:{}'.format(today))
# 今天的日期:2023-11-24
# 打印七天后的日期
t_day = datetime.timedelta(days=7)
today = datetime.date.today()
print('从今天向后推7天:{}'.format(t_day + today))
# 从今天向后推7天:2023-12-01
# 打印七天前的日期
t_day = datetime.timedelta(days=7)
today = datetime.date.today()
print('从今天向前推7天:{}'.format(today - t_day))
# 从今天向前推7天:2023-11-17
[3]日期对象与timedelta之间的关系
- 日期对象 = 日期对象 +/- timedelta对象
- timedelta对象 = 日期对象 +/- 日期对象
import datetime
day_now = datetime.date.today()
day_to = datetime.timedelta(days=6)
print(day_now)
# 2023-11-24
print(day_to)
# 6 days, 0:00:00
# 日期对象 = 日期对象 +/- timedelta对象
now_date = day_now + day_to
print(now_date) # 2023-11-30
print(type(now_date)) # <class 'datetime.date'>
# timedelta对象 = 日期对象 +/- 日期对象
lta2 = day_now - now_date
print(lta2) # -6 days, 0:00:00
print(type(lta2)) # <class 'datetime.timedelta'>
- 计算生日
import datetime
birthday = datetime.date(2023, 11, 24)
now_date = datetime.date.today()
today = datetime.date.today()
days = birthday - now_date
print('生日:{}'.format(birthday))
print('今天的日期:{}'.format(today))
print('距离生日还有{}天'.format(days))
# 生日:2023-11-24
# 今天的日期:2023-11-24
# 距离生日还有0:00:00天
(5)小结
import datetime
dt_today = datetime.datetime.today()
dt_now = datetime.datetime.now()
dt_utcnow = datetime.datetime.utcnow() # UTC时间与我们的北京时间cha ju
print(dt_today)
# 2023-11-24 22:15:43.241507
print(dt_now)
# 2023-11-24 22:15:43.241506
print(dt_utcnow)
# 2023-11-24 14:15:43.241506
本文来自博客园,作者:Unfool,转载请注明原文链接:https://www.cnblogs.com/queryH/p/17909354.html
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!