Python处理日期和时间 time和datetime模块

# Python处理日期和时间 time,datetime,calendar
# 一、在python中,通常有几种方式来表示时间
# 1、时间戳
# 2、格式化的时间字符串
# 3、时间元祖(struct_time)共9个元素,用一个元祖装起来的9组数字处理时间
# 二、UTC/时间戳/时间元祖
# 1、UTC,世界标准时间,在中国为UTC+8。DST(Daylight Saving Time)即夏令时;
# 2、时间戳,是从1970年1月1日00:00:00开始按秒计算的偏移量,time.time()返回浮点数的时间戳
# 3、时间元祖(struct_time),是用一个元祖装起来的9组数字处理时间,返回struct_time的函数主要有gmtime(),localtime(),strptime()
# tm_year 年
# tm_mon 月
# tm_mday 日
# tm_hour 时(24小时)
# tm_min 分
# tm_sec 秒
# tm_wday 0-6(0表示周日)
# tm_yday 一年中的第几天 1-366
# tm_isdst 是否是夏令时 默认为-1
# 三、time模块
import time
 
# 1、time.time()获取当前时间戳,浮点数的时间戳
ticks = time.time()
print(ticks)
 
# 2、time.localtime(secs)将一个时间转换为当前时区的struct_time,如果secs参数未提供,则以当前时间为准
localtime1 =time.localtime(time.time())
print(localtime1)
localtime2 = time.localtime(1625047899.907391)
print(localtime2)
localtime3 = time.localtime()
print(localtime3)
 
# 3、time.gmtime(secs),和localtime()方法类似,gmtime()方法是将一个时间戳转换为UTC时区(0时区)的struct_time
gmtime1 = time.gmtime(time.time())
print(gmtime1)
gmtime2 = time.gmtime(1625047899.907391)
print(gmtime2)
gmtime3 = time.gmtime()
print(gmtime3)
# 注意区别:localtime()方法返回的是当前时区的值,gmtime()返回的是0时区的值
 
# 4、time.mktime()方法是将一个struct_time转换为时间戳
a = time.localtime()
mktime1 = time.mktime(a)
print(mktime1)
 
# 5、time.sleep(secs):线程推迟指定的时间运行。单位为秒。
time.sleep(1)
print("等待1s")
 
# 6、time.asctime() 把struct_time元祖转换为‘Thu Jul 1 14:54:54 2021’格式,即‘%a %b %d %H:%M:%S %Y’;如果没有参数,会把time.localtime()作为参数传入
asctime1 = time.asctime(time.localtime())
print(asctime1)
asctime2 = time.asctime()
print(asctime2)
 
# 7、time.ctime() 是将时间戳转换为time.asctime()的形式,像‘Thu Jul 1 14:54:54 2021’格式;如果参数未给或者为None,会默认把time.time()作为参数传入
ctime1 = time.ctime(time.time())
print(ctime1)
ctime2 = time.ctime()
print(ctime2)
 
# 8、time.strftime(format[,t]),格式化时间,将struct_time时间元祖转换为格式化的时间字符串,如果t未指定,默认传入time.localtime()
# 格式化字符串
# %a:简化星期名称,%A:完整星期名称
# %b:简化月份名称,%B:完整月份名称
# %c:本地相应的日期和时间表示 Thu Jul 1 15:18:01 2021
# %j:显示当年第几天
# %U:一年中的星期数;%W:跟%U基本相同
# %w:显示在星期中的第几天,默认从0开始表示周一
# %H:按24小时制显示时间,%I:按12小时制显示时间;%M:显示分钟;%S:显示秒数;%p:本地am或者pm的相应符
# %y:去掉世纪的年份(00-99);%Y:完整的年份
# %m:显示月份
# %d:显示当月第几天
# %Z:时区的名字(如果不存在为空字符)
# %%:表示%
# %x:本地相应日期 07/01/21
# %X:本地相应时间 15:14:39
 
strftime1 = time.strftime('%Y-%m-%d %H:%M:%S %p %Z',time.localtime())
print("24小时制,年月日时分秒 PM/AM 时区:"+strftime1)
strftime2 = time.strftime('%x %X',time.localtime()) #07/01/21 15:14:39
print("本地相应日期和本地相应时间:"+strftime2)
strftime3 = time.strftime('%c',time.localtime()) # Thu Jul 1 15:18:01 2021
print('%c表示本地相应的日期和时间:'+strftime3)
strftime4 = time.strftime('%U',time.localtime())
print('%U表示一年中的星期数:'+strftime4)
strftime5 = time.strftime('%B %A',time.localtime())
print(strftime5)
strftime6 = time.strftime('%j',time.localtime())
print('%j表示一年中的第几天:'+strftime6)
 
# 9、time.strptime()将格式化的时间字符串(strftime的形式),转换为时间元祖struct_time
strptime1 = time.strptime('2021-07-01 15:22:28','%Y-%m-%d %H:%M:%S')
print(strptime1)
 
四、各个时间函数之间的关系
 
# 五、datetime模块
import _datetime
# 1、datetime模块常用类
# datetime.date:表示日期的类,常用的属性有year,month,day;
# datetime.time:表示时间的类,常用的属性有hour,minute,second,mocrosecond;
# datetime.datetime:表示日期时间
# datetime.timedelta:表示时间间隔,即两个时间点之间的长度;
# datetime.tzinfo:与时区有关的相关信息
 
# 2、datetime的常用方法
# 1)d=datetime.datetime.now() 获取当前的datetime日期类型的日期时间 如:2021-07-01 17:27:08.020853 <class 'datetime.datetime'>
# 然后可以通过d.timestamp(),d.year,d.month,d.day等调用
d = datetime.datetime.now() #2021-07-01 17:33:08.914698 <class 'datetime.datetime'>
print(d,type(d))
d1 = d.date() #2021-07-01 <class 'datetime.date'>
print(d1,type(d1))
d2 = d.time() #17:50:53.383037 <class 'datetime.time'>
print(d2,type(d2))
d3 = d.year # 2021 <class 'int'>
print(d3,type(d3))
d4 = d.month # 7 <class 'int'>
print(d4,type(d4))
d5 = d.day # 1 <class 'int'>
print(d5,type(d5))
d6 = d.timestamp() #时间戳 1625133053.383037 <class 'float'>
print(d6,type(d6))
# d.timetuple(),time.struct_time(tm_year=2021, tm_mon=7, tm_mday=1, tm_hour=17, tm_min=52, tm_sec=44, tm_wday=3, tm_yday=182, tm_isdst=0) <class 'time.struct_time'>,返回struct_time时间元祖,类似于time.localtime()
d7 = d.timetuple()
print(d7,type(d7))
 
# 2)datetime.date.fromtimestamp() 将一个时间戳转换为datetime日期类型,返回日期
dd = datetime.date.fromtimestamp(time.time()) # 2021-07-01
print(dd)
 
# 3)时间运算(datetime.timedelta)
ddd = datetime.datetime.now()
print(ddd)
 
ddd1 = datetime.datetime(2021,7,1,18,20,11,555)
print(ddd1)
 
ddd2 = ddd1 + datetime.timedelta(+4) #加4天
print(ddd2)
 
ddd3 = ddd1 +datetime.timedelta(days=1,hours=+1,minutes=10) # 加1天1个小时10分钟
print(ddd3)
 
# 4)时间替换 d.replace()
dddd = datetime.datetime(2021,1,1,9,30,59)
print(dddd)
dddd1 = dddd.replace(year=2000,month=12,day=31,hour=23,minute=59,second=59)
print(dddd1)
dddd2 = datetime.date(2021,12,31)
print(dddd2)
 
# 3、date类
# date类表示一个日期,由年月日组成,date类的构造函数如下:
# date.min:返回最小的年月日
# date.max:返回最大的年月日
# date.year:返回年
# date.month:返回月
# date.day:返回日
# date.today():返回当前日期,是datetime日期类型
 
d = datetime.date(2021,7,12) #<class 'datetime.date'>
print(d)
print(d.min) #0001-01-01
print(d.max) # 9999-12-31
today = d.today() #返回datetime日期类型,返回日期2021-07-01 <class 'datetime.date'>
print(today,type(today))
solution = d.resolution
print(solution,type(solution))
d1 = d.replace(year=1990,month=11,day=30) #日期替换
print(d1)
datetuple = d.timetuple()
print(datetuple) #返回日期的struct_time对象
print(d.weekday()) #返回星期,星期一为0,星期日为6
print(d.isoweekday()) # 返回星期,星期一为1,星期日为7
print(d.isocalendar()) #返回一个三元组,(ISO year年份, ISO week number一年的第几周, ISO weekday星期几,星期一为1)
isoformat = d.isoformat() # 返回 一个'YYYY-MM-DD'的字符串格式.
print(isoformat,type(isoformat))
ctime = d.ctime() # 返回一个字符串日期, d.ctime() 等同于 time.ctime(time.mktime(d.timetuple())).
print(ctime,type(ctime))
 
strfime =d.strftime('%Y-%m-%d %H:%M:%S %p %Z') # 返回一个字符串日期, 格式自定义.
print(strfime)

posted @ 2021-07-02 10:23  雨的记忆  阅读(427)  评论(0)    收藏  举报