常用模块之time、datetime模块
1666 字
8 分钟
常用模块之time、datetime模块
【一】时间模块(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'>[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.6196976time_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-24print(day_to)# 6 days, 0:00:00
# 日期对象 = 日期对象 +/- timedelta对象now_date = day_now + day_toprint(now_date) # 2023-11-30print(type(now_date)) # <class 'datetime.date'>
# timedelta对象 = 日期对象 +/- 日期对象lta2 = day_now - now_dateprint(lta2) # -6 days, 0:00:00print(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_dateprint('生日:{}'.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.241507print(dt_now)# 2023-11-24 22:15:43.241506print(dt_utcnow)# 2023-11-24 14:15:43.241506支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
相关文章智能推荐
1
C 语言发展史
编程语言了解 C 语言从 BCPL、B 语言到现代标准 C 的发展历程、核心特点与应用领域。
2
C 语言开发环境的安装与配置
编程语言在 Windows、Linux 与 macOS 上安装 C 工具链,配置编辑器,并编译运行第一个 C 程序。
3
C 语言初识:程序运行机制与基本结构
编程语言认识 C 程序从源代码到运行的完整流程,以及基础语法和程序的基本结构。
4
C 语言基础:注释、关键字、变量与数据类型
编程语言学习 C 语言的注释、关键字、标识符、常量、变量和基本数据类型等基础知识。
5
C 语言数据类型
编程语言理解 C 语言的数据类型体系,包括基本类型、整数类型、浮点类型和逻辑类型。
随机文章随机推荐














