python 时间差模块_python模块之时间模块

time模块

表示时间的三种方式

1. 时间戳(timestamp)

时间戳表示的是从1970年1月1日0时0分到当前时间的时间差,以秒计(浮点数),获取时间戳的方式为time.time()

2. 格式化的时间字符串(format string)

带格式的时间,也就是我们平时用到的时间,如"2018-12-18"

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. 结构化时间(struc_time)

结构化时间是一个包含9个元素的元组,元素分别是年、月、日、时、分、秒、一年中第几周、一年中第几天、是否是夏令时

cc48cedb0b6c55654da78f22052a5bfb.png

示例:

importtimeprint(time.time()) #1547215687.22852

print(time.strftime("%Y-%m-%d %H:%M:%S")) #2019-01-11 22:08:59

#时间元组:localtime将一个时间戳转化成当前时区的struct_time

print(time.localtime()) #time.struct_time(tm_year=2019, tm_mon=1, tm_mday=11, tm_hour=22, tm_min=11, tm_sec=29, tm_wday=4, tm_yday=11, tm_isdst=0)

三种时间格式之间的转化

583d8b827a5f5d087dc4cd8c2a17f788.png

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

#格式化时间----> 结构化时间

ft = time.strftime("%Y-%m-%d %H:%M:%S")print(ft) #2019-01-11 22:46:41

st = time.strptime(ft, "%Y-%m-%d %H:%M:%S") #第一个参数为格式化时间,第二个参数为具体格式

print(st) #time.struct_time(tm_year=2019, tm_mon=1, tm_mday=11, tm_hour=22, tm_min=47, tm_sec=27, tm_wday=4, tm_yday=11, tm_isdst=-1)

#结构化时间----> 时间戳

t =time.mktime(st)print(t) #1547218165.0

#时间戳----> 结构化时间

t =time.time()

st=time.localtime(t)print(st) #time.struct_time(tm_year=2019, tm_mon=1, tm_mday=11, tm_hour=22, tm_min=50, tm_sec=41, tm_wday=4, tm_yday=11, tm_isdst=0)

#结构化时间----> 格式化时间

ft = time.strftime("%Y-%m-%d %H:%M:%S", st) #第一个参数为时间格式,第二个参数为结构化时间

print(ft) #2019-01-11 22:52:12

三种时间格式之间的转换

4. asctime

python提供了一种默认的格式化时间asctime,格式为%a %b %d %H:%M:%S %Y

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

#asctime

#结构化时间----> %a %b %d %H:%M:%S %Y串#time.asctime(结构化时间)如果不穿参数。直接返回当前时间的格式化串#print(time.asctime()) # Sat Jan 12 09:52:38 2019#st = time.localtime(1500000000) # 时间戳转化成结构化时间#print(st) # time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)#at = time.asctime(st)#print(at) # Fri Jul 14 10:40:00 2017

#时间戳----> %a %b %d %H:%M:%S %Y串#time.ctime(时间戳) 如果不传参数,直接返回会当前时间的格式化串#print(time.ctime()) # Sat Jan 12 10:04:36 2019#print(time.ctime(2000000000)) # Wed May 18 11:33:20 2033

#t = time.time()#ft = time.ctime(t)#print(ft) # Sat Jan 12 10:08:13 2019

asctime与结构化时间、时间戳之间的转换

5. 计算时间差

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

#计算时间差#1. 给出两个格式化时间,计算时间差

ft1 = "2018-06-26 17:00:20"ft2= "2018-06-27 17:00:20"

#思路:1. 把两个格式化时间转化成时间戳tt1和tt2#2. tt2-tt1得到tt3#3. 将tt3转化成结构化时间#4. 提取结构化时间里的年月日,处理后得到时间差

st1= time.strptime(ft1, "%Y-%m-%d %H:%M:%S") #格式化时间--->结构化时间

st2 = time.strptime(ft2, "%Y-%m-%d %H:%M:%S")

tt1= time.mktime(st1) #结构化时间--->时间戳

tt2 =time.mktime(st2)

tt3= tt2 - tt1 #时间戳相减

st3 = time.localtime(tt3) #时间戳--->结构化时间(命名元组) 时间戳是从1970年1月1日0点0分0秒(格林威治时间);localtime是当地时间,所以tm_hour应该减去时区

print(st3)print(st3.tm_year) #提取结构化时间里的年份

print("过去了%s年%s个月%s天%s小时%s分%s秒" % (st3.tm_year-1970, st3.tm_mon-1, st3.tm_mday-1, st3.tm_hour-8, st3.tm_min, st3.tm_sec)) #注意tm_hour要减8

View Code

datetime模块

datetime主要用于调整时间

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

importdatetime#time1 = datetime.datetime(1998, 12, 18, 10, 8, 50) # 调整到指定时间#print(time1) # 1998-12-18 10:08:50#

#time2 = datetime.datetime(year=1993, month=7, day=7, hour=12) # 年月日必须指定,时分秒可以部分指定或不指定,需按照年月日时分秒的顺序#print(time2) # 1993-07-07 12:00:00

#2. 根据当前时间指定时间

current_time = datetime.datetime.now() #获取当前时间

print(current_time) #2019-01-12 11:00:57.630978

delta_time = datetime.timedelta(weeks=3) #3周后

print(current_time+delta_time) #2019-02-02 11:03:33.487401

print(current_time+datetime.timedelta(weeks=-3)) #3周前

print(current_time+datetime.timedelta(days=-5)) #5天前

print(current_time+datetime.timedelta(hours=6)) #6天后

#注意:只能调整的字段 weeks days hours minutes seconds

#将时间戳转化成时间

print(datetime.date.fromtimestamp(2247274932)) #2041-03-19

调整时间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值