time与datetime模块
一:time
时间分为三种格式:
1、时间戳:从1970年到现在经过的秒数 作用:用于时间间隔的计算
import time
print(time.time()) # 1607425475.5931325
2、按照某种格式显示的时间:2020-03-30 11:11:11 作用:用于展示时间
import time
print(time.strftime('%Y-%m-%d %H:%M:%S %p')) # 2020-12-08 19:04:35 PM
print(time.strftime('%Y-%m-%d %X')) # 2020-12-08 19:04:35
3、结构化的时间 作用:用于单独获取时间的某一部分
import time
res=time.localtime() # 中国时间,东8区时间
print(res) # time.struct_time(tm_year=2020, tm_mon=12, tm_mday=8, tm_hour=20, tm_min=43, tm_sec=7, tm_wday=1, tm_yday=343, tm_isdst=0)
print(res.tm_year) # 2020
了解:
import time
res=time.gmtime() # 世界标准时间
print(res) # time.struct_time(tm_year=2020, tm_mon=12, tm_mday=8, tm_hour=12, tm_min=43, tm_sec=7, tm_wday=1, tm_yday=343, tm_isdst=0)
格式化字符串的时间格式
import time
print(time.strftime('%a')) # Tue # 周几缩写
print(time.strftime('%A')) # Tuesday # 周几
print(time.strftime('%b')) # Dec # 月份缩写
print(time.strftime('%B')) # December # 月份
print(time.strftime('%c')) # Tue Dec 8 19:30:55 2020 # 周 月 日 时间 年
print(time.strftime('%d')) # 08 # 日
print(time.strftime('%H')) # 19 # 时---24小时时钟
print(time.strftime('%I')) # 07 # 时---12小时时钟
print(time.strftime('%j')) # 343 # 一年的第几天
print(time.strftime('%m')) # 12 # 月份
print(time.strftime('%M')) # 39 # 分钟
print(time.strftime('%p')) # PM # 上午、下午
print(time.strftime('%S')) # 45 # 秒
print(time.strftime('%U')) # 49 # 一年的周数(星期日是一周的第一天)
print(time.strftime('%w')) # 2 # 以小数形式表示的工作日[0(星期日),6]
print(time.strftime('%W')) # 49 # 一年的周数(星期一是一周的第一天)
print(time.strftime('%x')) # 12/08/20 # 月/日/年
print(time.strftime('%X')) # 20:01:05 # 时:分:秒
print(time.strftime('%y')) # 20 # 世纪
print(time.strftime('%Y')) # 2020 # 年
print(time.strftime('%z')) # +0800 # 当地时区名称
print(time.strftime('%Z')) # 中国标准时间 # 当地时区名称
print(time.strftime('%%')) # % # 本身
二:datetime
时间加减
import datetime
import time
print(datetime.datetime.now()) # 返回 2016-08-19 12:47:03.941925
print(datetime.date.fromtimestamp(time.time()) ) # 时间戳直接转成日期格式 2016-08-19
print(datetime.datetime.now() )
print(datetime.datetime.now() + datetime.timedelta(3)) # 当前时间+3天
print(datetime.datetime.now() + datetime.timedelta(-3)) # 当前时间-3天
print(datetime.datetime.now() + datetime.timedelta(hours=3)) # 当前时间+3小时
print(datetime.datetime.now() + datetime.timedelta(minutes=30)) # 当前时间+30分
c_time = datetime.datetime.now()
print(c_time.replace(minute=3,hour=2)) # 时间替换
时间格式的转换
# 结构化的时间===》时间戳
import time
s_time=time.localtime()
print(s_time) # time.struct_time(tm_year=2020, tm_mon=12, tm_mday=8, tm_hour=20, tm_min=31, tm_sec=21, tm_wday=1, tm_yday=343, tm_isdst=0)
print(time.mktime(s_time)) # 1607430681.0
# 时间戳===》结构化的时间
tp_time=time.time()
print(tp_time) # 1607431090.0502841
print(time.localtime(tp_time)) # time.struct_time(tm_year=2020, tm_mon=12, tm_mday=8, tm_hour=20, tm_min=38, tm_sec=10, tm_wday=1, tm_yday=343, tm_isdst=0)
# 结构化的时间===》格式化字符串形式的时间
print(time.strftime('%Y-%m-%d %H:%M:%S')) # 2020-12-08 20:50:53 # 默认后面加了localtime
print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())) # 2020-12-08 20:50:53
# 格式化字符串形式的时间===》结构化的时间
print(time.strptime('2020-12-08 20:50:53', '%Y-%m-%d %H:%M:%S')) #time.struct_time(tm_year=2020, tm_mon=12, tm_mday=8, tm_hour=20, tm_min=50, tm_sec=53, tm_wday=1, tm_yday=343, tm_isdst=-1)
# 需求:'2020-12-08 20:50:53'+7
import time
# format string--->struct_time--->timestamp
struct_time = time.strptime('2020-12-08 20:50:53', '%Y-%m-%d %H:%M:%S')
timestamp = time.mktime(struct_time) + 7 * 86400
print(timestamp)
# format string<---struct_time<---timestamp
res = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(timestamp))
print(res)
了解
time.sleep()
import time
time.sleep(3) # 程序沉睡3秒运行
print('1111')
time.asctime()
import time
print(time.asctime()) # Tue Dec 8 21:31:55 2020
print(time.strftime('%c')) # Tue Dec 8 21:31:55 2020
# 两种方法都可以做到
.now() .utcnow()
import datetime
print(datetime.datetime.now()) # 2020-12-08 22:32:09.230375 # 中国标准时间
print(datetime.datetime.utcnow()) # 2020-12-08 14:32:09.230375 # 世界标准时间
.fromtimestamp()
import datetime
# 直接把时间戳改为格式化字符串格式
print(datetime.datetime.fromtimestamp(3333333)) # 1970-02-08 21:55:33