目录
- 一、time模块
- 常用方法
- 二、datetime模块
- 1 date类:datetime.date(year, month, day)
- 2 time类
- 3 datetime类
- 4 timedelta类
- 5 tzinfo类
一、time模块【python基础知识入门 python基础——time模块和datetime模块】??time模块功能接近于操作系统层面 。有些函数是平台相关的(如:time.clock()),可能会在不同的平台有不同的效果 。基于Unix Timestamp,所以其所能表述的日期范围被限定在 1970 - 2038 之间 。需要处理在前面所述范围之外的日期,可能需要考虑使用datetime模块 。
time模块中时间表现的格式主要有三种:
- timestamp时间戳,表示的是从1970年1月1日00:00:00开始按秒计算的偏移量 。float
- struct_time时间元组,共有九个元素组 。time.struct_time
- format time 格式化时间,已格式化的结构使时间更具可读性 。包括自定义格式和固定格式 。str
struct_time元组属性:
序号属性值0tm_year20081tm_mon1 到 122tm_mday1 到 313tm_hour0 到 234tm_min0 到 595tm_sec0 到 61 (60或61 是闰秒)6tm_wday0到6 (0是周一)7tm_yday1 到 366(儒略历)8tm_isdst-1, 0, 1, -1是决定是否为夏令时的旗帜format time结构化表示:
格式含义%a本地(locale)简化星期名称%A本地完整星期名称%b本地简化月份名称%B本地完整月份名称%c本地相应的日期和时间表示%d一个月中的第几天(01 - 31)%H一天中的第几个小时(24小时制,00 - 23)%I第几个小时(12小时制,01 - 12)%j一年中的第几天(001 - 366)%m月份(01 - 12)%M分钟数(00 - 59)%p本地am或者pm的相应符%S秒(01 - 61)%U一年中的星期数 。(00 - 53星期天是一个星期的开始 。)第一个星期天之前的所有天数都放在第0周 。%w一个星期中的第几天(0 - 6,0是星期天)%W和%U基本相同,不同的是%W以星期一为一个星期的开始 。%x本地相应日期%X本地相应时间%y去掉世纪的年份(00 - 99)%Y完整的年份%Z时区的名字(如果不存在为空字符)%%‘%’字符常用方法
- 获取时间
import time# 获取当地当前,以时间戳格式表现time.time()# 获取当地当前,以时间元组格式表现time.localtime() # 本地时间,东八区time.gmtime()# 格林威治时间,0时区# 获取当地当前,以时间格式化形式表现time.ctime()time.asctime()time.strftime("%Y-%m-%d %X")
文章插图
- 形式转换

文章插图
# Timestamp——>struct_timeprint("Timestamp——>struct_time:")timestamp_now = time.time()time.localtime(timestamp_now)time.gmtime(timestamp_now)# struct_time——>formating timeprint("struct_time——>formating time:")structtime_now = time.localtime()time.strftime('%Y',structtime_now)time.strftime("%Y-%m-%d %X",structtime_now)time.asctime(structtime_now)# formating time——>struct_timeprint("formating time——>struct_time:")formatingtime_now = '2021-06-13 16:37:06'time.strptime(formatingtime_now,"%Y-%m-%d %X")time.strptime("30 Nov 00", "%d %b %y")# struct_time——>Timestampprint("struct_time——>Timestamp:")time.mktime(structtime_now)# Timestamp——>formating timeprint("Timestamp——>formating time:")time.ctime(timestamp_now)
文章插图
其他:菜鸟教程
二、datetime模块??datetime 基于 time 进行了封装,提供了更多实用的函数接口 。在datetime 模块中包含了几个类:
- datetime:时间和日期
- date:只关注日期
- time:只关注时间
- tzinfo:时区相关
- timedelta:用于计算时间跨度
1 date类:datetime.date(year, month, day)
from datetime import dateimport time# 静态方法date.max # date对象所能表示的最大、最小日期;date.mindate.resolution # date对象表示日期的最小单位:天.
文章插图
# 构造date对象date.today() # 返回一个表示当前本地日期的date对象date(2021, 6, 13) # date对象
文章插图
# date对象常用方法和属性now_date = date.today()now_date.year # 年、月、日now_date.monthnow_date.daynow_date.replace(month=7) # 生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性 。(原对象仍保持不变)now_date.timetuple() # 返回日期对应的time.struct_time对象now_date.weekday() # 返回星期几weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推;(从0开始)now_date.isoweekday() # 返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推;(从1开始)now_date.isoformat() # 返回格式如'YYYY-MM-DD’的字符串;now_date.isocalendar() # 返回格式如(year,month,day)的元组;now_date.strftime(format='%y') # 返回格式化后的字符串,格式和time模块format相同
文章插图
2 time类datetime.time(hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] )
from datetime import timeimport time# 静态方法time.maxtime.mintime.resolution # 1微妙
文章插图
now_time = time(14,9,5,32) # 构造time对象# 方法和属性now_time.hournow_time.minutenow_time.secondnow_time.microsecond # 微秒# now_time.tzinfo # 时区信息now_time.replace(minute=59)now_time.isoformat() # 返回型如"HH:MM:SS"格式的字符串表示;now_time.strftime(format='%H-%M %S') # 格式化输出
文章插图
3 datetime类datetime相当于date和time的结合:
datetime.datetime (year, month, day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] )from datetime import datetimeimport time# 静态方法datetime.maxdatetime.mindatetime.resolution
文章插图
# 构造datetime类:可以根据tz参数指定时区datetime.today()datetime.now() # 可以传入tz参数,获取tz参数所指时区的本地时间datetime.utcnow() # 格林威治时间,0时区 tz=0# datetime.fromtimestamp(timestamp[, tz]) 根据时间戮创建一个datetime对象,参数tz指定时区信息;# datetime.utcfromtimestamp(timestamp) 根据时间戮创建一个datetime对象;# datetime.combine(date, time) 根据date和time,创建一个datetime对象;# datetime.strptime(date_string, format) 将格式字符串转换为datetime对象;
文章插图
# 一些方法和属性dt_now=datetime.now()#datetime对象dt_nowdt_now.year# dt.year、month、day、hour、minute、second、microsecond、tzinfodt_now.replace(year=2020,day=9)dt_now.timetuple() # 返回日期对应的time.struct_time对象dt_now.utctimetuple()dt_now.toordinal()dt_now.weekday()dt_now.isoweekday()dt_now.isocalendar()dt_now.isoformat()dt_now.ctime()dt_now.strftime("%Y %X")
文章插图
4 timedelta类
from datetime import datetimefrom datetime import timedeltadt = datetime.now()# 日期偏移操作dttomorrow = dt + timedelta(days=1) # 明天tomorrowyesterday = dt + timedelta(days=-1) # 昨天yesterdaytimedelta_ = tomorrow - yesterday # timedelta对象timedelta_timedelta_.days # 时间偏移的天数timedelta_.total_seconds() # 时间偏移的秒数
文章插图
5 tzinfo类
from datetime import datetime, tzinfo,timedelta"""tzinfo是关于时区信息的类tzinfo是一个抽象类,所以不能直接被实例化"""class UTC(tzinfo):"""UTC"""def __init__(self,offset = 0):self._offset = offsetdef utcoffset(self, dt):return timedelta(hours=self._offset)def tzname(self, dt):return "UTC +%s" % self._offsetdef dst(self, dt):return timedelta(hours=self._offset)#北京时间beijing = datetime(2011,11,11,0,0,0,tzinfo = UTC(8))#曼谷时间bangkok = datetime(2011,11,11,0,0,0,tzinfo = UTC(7))#北京时间转成曼谷时间beijing.astimezone(UTC(7))#计算时间差时也会考虑时区的问题timespan = beijing - bangkok
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
