首页 > 技术文章 > 🍖time 与 datetime 模块

songhaixing 2020-12-18 21:00 原文

引入

1.什么是 time 与 datetime 模块

  • 它们是 Python 中与时间处理有关的标准库模块

ps : Python 时间处理模块还有 calendar 模块

2.UTC 和 DST

  • UTC(Coordinated Universal Time,世界协调时)格林威治天文时间,世界标准时间, 在中国 : UTC+8
  • DST(Daylight Saving Time)夏令时

一. Python中时间的三种表达方式

1.时间戳 (timestamp)

  • 通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算偏移量
  • 返回时间戳方式的函数主要有time( ),clock( )等, 运行print(type(time.time())), 返回的是float类型
import time

print(time.time())        # 1608256754.2573004
print(type(time.time()))  # <class 'float'>

2.格式化的时间字符串 (Format String)

  • 示例
import time

print(time.strftime("%Y-%m-%d %H:%M:%S %p"))  # 2020-12-18 10:25:16 AM
print(time.strftime("%Y-%m-%d %X"))  # 2020-12-18 10:25:16 AM
  • 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 当前时区的名称
%% %号本身

3.结构化的时间 (struct_time) 元组

  • struct_time 元组共有九个元素
  • 返回 struct_time 的函数主要有 : localtime( ), gmtime( ), strptime( )
import time

⛅localtime( )
print(time.localtime())        # 本地时区元组(struct_time) 
'''输出
time.struct_time(tm_year=2020, tm_mon=12, tm_mday=18, tm_hour=8, tm_min=45, tm_sec=9, tm_wday=4, tm_yday=353, tm_isdst=0)\
'''
print(type(time.localtime()))  # <class 'time.struct_time'>
print(time.localtime()[3])     # 8

⛅gmtime( )
print(time.gmtime())           # UTC时区元组(struct_time)
'''输出
time.struct_time(tm_year=2020, tm_mon=12, tm_mday=18, tm_hour=0, tm_min=45, tm_sec=9, tm_wday=4, tm_yday=353, tm_isdst=0)
'''
print(type(time.gmtime()))     # <class 'time.struct_time'>
print(time.gmtime()[0])        # 2020
  • 元組 (struct_time) 九个元素的含义 :

索引(Index)属性(Attribute)值(Values)
0tm_year(年)比如2011
1tm_mon(月)1 - 12
2tm_mday(日)1 - 31
3tm_hour(时)0 - 23
4tm_min(分)0 - 59
5tm_sec(秒)0 - 59
6tm_wday(weekday)0 - 6(0表示周日)
7tm_yday(一年中的第几天)1 - 366
8tm_isdst(是否是夏令时)默认为-1

二.时间格式转换关系 (需要掌握)

1.转换图

  • 计算机能认识的时间只能是 "时间戳" 格式
  • 而人类能看懂的时间是 "格式化的时间字符串""结构化的时间", 于是就有了转换关系

时间格式转换

2.格式转换操作 (需要掌握的操作)

  • 格式化的字符串时间时间戳之间的转换都是以结构化的时间作为中转站来进行操作的

推荐阅读