Python time(时间模块)
和时间有关系的我们就要用到时间模块。在使用模块之前,应该首先导入这个模块。
# time 模块的常用方法 import time # 1、(线程)推迟指定的时间运行,单位为秒。 time.sleep(3) # 2、获取当前时间戳 tim_t = time.time() print(tim_t)
结果:
等待3秒后执行结果: D:\YuchuanProjectData\PythonProject\venv\Scripts\python.exe D:/YuchuanProjectData/PythonProject/YuchuanDemo006.py 1579252953.7368343 Process finished with exit code 0
在Python中,通常有这三种方式来表示时间:时间戳、元组(struct_time)、格式化的时间字符串:
(1)时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
(2)格式化的时间字符串(Format String): ‘1999-12-06’
print(type(time.time()))
结果:
D:\YuchuanProjectData\PythonProject\venv\Scripts\python.exe D:/YuchuanProjectData/PythonProject/YuchuanDemo006.py <class 'float'> Process finished with exit code 0
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元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)
索引(Index) | 属性(Attribute) | 值(Values) |
---|---|---|
0 | tm_year(年) | 比如2011 |
1 | tm_mon(月) | 1 - 12 |
2 | tm_mday(日) | 1 - 31 |
3 | tm_hour(时) | 0 - 23 |
4 | tm_min(分) | 0 - 59 |
5 | tm_sec(秒) | 0 - 60 |
6 | tm_wday(weekday) | 0 - 6(0表示周一) |
7 | tm_yday(一年中的第几天) | 1 - 366 |
8 | tm_isdst(是否是夏令时) | 默认为0 |
首先,我们先导入time模块,来认识一下python中表示时间的几种格式:
# 导入时间模块 import time # 时间戳 time_t = time.time() print(time_t) # 时间字符串 print(time.strftime("%Y-%m-%d %X")) print(time.strftime("%Y-%m-%d %H-%M-%S")) # 时间元组:localtime将一个时间戳转换为当前时区的struct_time print(time.localtime(time_t))
结果:
D:\YuchuanProjectData\PythonProject\venv\Scripts\python.exe D:/YuchuanProjectData/PythonProject/YuchuanDemo006.py 1579255940.0655744 2020-01-17 18:12:20 2020-01-17 18-12-20 time.struct_time(tm_year=2020, tm_mon=1, tm_mday=17, tm_hour=18, tm_min=12, tm_sec=20, tm_wday=4, tm_yday=17, tm_isdst=0) Process finished with exit code 0
小结:时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的
几种格式之间的转换
import time # 时间戳-->结构化时间 # time.gmtime(时间戳) #UTC时间,与英国伦敦当地时间一致 # time.localtime(时间戳) #当地时间。例如我们现在在北京执行这个方法:与UTC时间相差8小时,UTC时间+8小时 = 北京时间 time_t = time.time() time_gm = time.gmtime(time_t) print(time_gm) time_loc = time.localtime(time_t) print(time_loc) # 结构化时间-->时间戳 # time.mktime(结构化时间) time.sleep(3) time_tuple = time.localtime(time.time()) print(time.mktime(time_tuple))
结果:
D:\YuchuanProjectData\PythonProject\venv\Scripts\python.exe D:/YuchuanProjectData/PythonProject/YuchuanDemo006.py time.struct_time(tm_year=2020, tm_mon=1, tm_mday=17, tm_hour=10, tm_min=22, tm_sec=45, tm_wday=4, tm_yday=17, tm_isdst=0) time.struct_time(tm_year=2020, tm_mon=1, tm_mday=17, tm_hour=18, tm_min=22, tm_sec=45, tm_wday=4, tm_yday=17, tm_isdst=0) 1579256568.0 Process finished with exit code 0
import time # 结构化时间-->字符串时间 # time.strftime("格式定义","结构化时间") 结构化时间参数若不传,则显示当前时间 print(time.strftime("%Y-%m-%d %X")) print(time.strftime("%Y-%m-%d", time.localtime(1600000000))) # 字符串时间-->结构化时间 # time.strptime(时间字符串,字符串对应格式) print(time.strptime("2020-01-17", "%Y-%m-%d")) print(time.strptime("01/17/2020", "%m/%d/%Y"))
结果:
D:\YuchuanProjectData\PythonProject\venv\Scripts\python.exe D:/YuchuanProjectData/PythonProject/YuchuanDemo006.py 2020-01-17 18:31:32 2020-09-13 time.struct_time(tm_year=2020, tm_mon=1, tm_mday=17, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=17, tm_isdst=-1) time.struct_time(tm_year=2020, tm_mon=1, tm_mday=17, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=17, tm_isdst=-1) Process finished with exit code 0
import time # 结构化时间 --> %a %b %d %H:%M:%S %Y串 # time.asctime(结构化时间) 如果不传参数,直接返回当前时间的格式化串 print(time.asctime(time.localtime(1600000000))) print(time.asctime()) # 时间戳 --> %a %b %d %H:%M:%S %Y串 # time.ctime(时间戳) 如果不传参数,直接返回当前时间的格式化串 print(time.ctime()) print(time.ctime(1700000000))
结果:
D:\YuchuanProjectData\PythonProject\venv\Scripts\python.exe D:/YuchuanProjectData/PythonProject/YuchuanDemo006.py Sun Sep 13 20:26:40 2020 Fri Jan 17 18:41:29 2020 Fri Jan 17 18:41:29 2020 Wed Nov 15 06:13:20 2023 Process finished with exit code 0
计算时间差
import time true_time = time.mktime(time.strptime('2020-01-11 08:30:00', '%Y-%m-%d %H:%M:%S')) time_now = time.mktime(time.strptime('2020-09-12 11:00:00', '%Y-%m-%d %H:%M:%S')) dif_time = time_now - true_time struct_time = time.gmtime(dif_time) print('过去了%d年%d月%d天%d小时%d分钟%d秒' % (struct_time.tm_year - 1970, struct_time.tm_mon - 1, struct_time.tm_mday - 1, struct_time.tm_hour, struct_time.tm_min, struct_time.tm_sec))
结果:
D:\YuchuanProjectData\PythonProject\venv\Scripts\python.exe D:/YuchuanProjectData/PythonProject/YuchuanDemo006.py 过去了0年8月2天2小时30分钟0秒 Process finished with exit code 0
datetime模块
1.datetime.now() # 获取当前datetime
datetime.utcnow() # 获取当前格林威治时间
from datetime import datetime # 获取当前datetime print(datetime.now()) # 获取当前格林威治时间 print(datetime.utcnow()) """ from datetime import datetime #获取当前本地时间 a=datetime.now() print('当前日期:',a) #获取当前世界时间 b=datetime.utcnow() print('世界时间:',b) """
结果:
D:\YuchuanProjectData\PythonProject\venv\Scripts\python.exe D:/YuchuanProjectData/PythonProject/YuchuanDemo006.py 2020-01-17 18:54:11.325690 2020-01-17 10:54:11.325690 Process finished with exit code 0
2.datetime(2017, 5, 23, 12, 20) # 用指定日期时间创建datetime
from datetime import datetime # 用指定日期创建 c = datetime(2020, 1, 17, 12, 20) print('指定日期:', c)
结果:
D:\YuchuanProjectData\PythonProject\venv\Scripts\python.exe D:/YuchuanProjectData/PythonProject/YuchuanDemo006.py 指定日期: 2020-01-17 12:20:00 Process finished with exit code 0
3.将以下字符串转换成datetime类型:
'2020/9/30'
'2020年9月30日星期六'
'2020年9月30日星期六8时42分24秒'
'9/30/2020'
'9/30/2020 8:42:50 '
from datetime import datetime d = datetime.strptime('2020/9/30', '%Y/%m/%d') print(d) e = datetime.strptime('2020年9月30日星期六', '%Y年%m月%d日星期六') print(e) f = datetime.strptime('2020年9月30日星期六8时42分24秒', '%Y年%m月%d日星期六%H时%M分%S秒') print(f) g = datetime.strptime('9/30/2020', '%m/%d/%Y') print(g) h = datetime.strptime('9/30/2020 8:42:50 ', '%m/%d/%Y %H:%M:%S ') print(h)
结果:
D:\YuchuanProjectData\PythonProject\venv\Scripts\python.exe D:/YuchuanProjectData/PythonProject/YuchuanDemo006.py 2020-09-30 00:00:00 2020-09-30 00:00:00 2020-09-30 08:42:24 2020-09-30 00:00:00 2020-09-30 08:42:50 Process finished with exit code 0
4.将以下datetime类型转换成字符串:
2020年9月28日星期4,10时3分43秒
Saturday, September 30, 2020
9/30/2020 9:22:17 AM
September 30, 2020
时间字符串格式化
from datetime import datetime import locale locale.setlocale(locale.LC_CTYPE, 'chinese') i = datetime(2020, 9, 28, 10, 3, 43) print(i.strftime('%Y年%m月%d日%A,%H时%M分%S秒')) j = datetime(2020, 9, 30, 10, 3, 43) print(j.strftime('%A,%B %d,%Y')) k = datetime(2020, 9, 30, 9, 22, 17) print(k.strftime('%m/%d/%Y %I:%M:%S%p')) l = datetime(2020, 9, 30) print(l.strftime('%B %d,%Y'))
结果:
D:\YuchuanProjectData\PythonProject\venv\Scripts\python.exe D:/YuchuanProjectData/PythonProject/YuchuanDemo006.py 2020年09月28日Monday,10时03分43秒 Wednesday,September 30,2020 09/30/2020 09:22:17AM September 30,2020 Process finished with exit code 0
5.用系统时间输出以下字符串:
今天是2020年1月17日
今天是这周的第?天
今天是今年的第?天
今周是今年的第?周
今天是当月的第?天
from datetime import datetime import locale locale.setlocale(locale.LC_CTYPE, 'chinese') # 获取当前系统时间 m = datetime.now() print(m.strftime('今天是%Y年%m月%d日')) print(m.strftime('今天是这周的第%w天')) print(m.strftime('今天是今年的第%j天')) print(m.strftime('今周是今年的第%W周')) print(m.strftime('今天是当月的第%d天'))
结果:
D:\YuchuanProjectData\PythonProject\venv\Scripts\python.exe D:/YuchuanProjectData/PythonProject/YuchuanDemo006.py 今天是2020年01月17日 今天是这周的第5天 今天是今年的第017天 今周是今年的第02周 今天是当月的第17天 Process finished with exit code 0
- 点赞
- 收藏
- 关注作者
评论(0)