Python中对日期和时间的处理,主要用calendar和time两个模块。
Time: 在了解time前,先了解两个概念“时间戳”和“时间元组”。“时间戳”是指格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Python中获取当前时间戳是用time模块下的time()方法:
import time time_stamp = time.time() print(time_stamp)
D:\pythonProjects\venv\Scripts\python.exe D:/pythonProjects/100Prac/52.py 1525762868.533137 # 返回的秒数
"时间元组”是将年、月、日、小时、分钟、秒、一周的第几日、一年的第几日和是否夏令时做为元组元素来组成一个元组,这个元组就叫“时间元组”,其index和属性的对应关系如下表:
Index | 属性 | 值 |
---|---|---|
0 | tm_year | 2008 |
1 | tm_mon | 1 到 12 |
2 | tm_mday | 1 到 31 |
3 | tm_hour | 0 到 23 |
4 | tm_min | 0 到 59 |
5 | tm_sec | 0 到 61 (60或61 是闰秒) |
6 | tm_wday | 0到6 (0是周一) |
7 | tm_yday | 1 到 366(儒略历) |
8 | tm_isdst | -1, 0, 1, -1是决定是否为夏令时的旗帜 |
下面的代码,先获取当前的时间戳,然后用localtime()返回时间元组,接着用asctime()方法,将时间元组转换为一个可读的形式。
import time time_stamp = time.time() print(time_stamp) localtime = time.localtime(time_stamp)# 将时间戳转为时间元组 print(time.asctime())# 将时间元组转换为一个可读的形式
D:\pythonProjects\venv\Scripts\python.exe D:/pythonProjects/100Prac/52.py 1525765988.9266133 Tue May 8 15:53:08 2018
下面的代码,用来将当前时间展现为一个易读的字符串:
import time import datetime time_stamp = time.time() localtime = time.localtime(time_stamp)# 将时间戳转为时间元组 print(time.asctime())# 将时间元组转换为一个可读的形式 print(time.strftime("%Y-%m-%d %H:%M:%S", localtime)) # 将时间元组转为一个易读的格式 # 另外一种常用的写法 date_time = datetime.datetime.now() # 将日期格式转化为字符串格式 print(date_time.strftime("%Y-%m-%d %H:%M:%S")) # 格式中不能含中文字符 # sleep在自动化脚本中也经常使用 time.sleep(3) # 推迟现成的运行,参数是秒这个格式化中的参数说明如下:
- %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 当前时区的名称
- %% %号本身
calendar:
感觉实际使用的场景不多,我只用过下面的weekday()方法;后面遇到有其它的应用场景后,我再添加相关说明。
import calendar print(calendar.weekday(2018, 5, 8)) # 返回给定日期的日期码。0(星期一)到6(星期日)。月份为 1(一月) 到 12(12月)。