目录
前言
在Python全站自动化测试中,经常需要处理时间和日期,以验证系统的时间戳、执行周期性任务或者模拟不同时间点的行为。Python的
datetime
和calendar
模块提供了强大的工具来处理这些需求。
1、datetime模块
datetime
模块是Python中处理日期和时间的标准库。它重新封装了time
模块,并提供了更多的接口和类,如date
、time
、datetime
、timedelta
等。
1.1、创建和获取时间
-
创建时间元组:你可以使用
datetime.datetime
类根据给定的年、月、日、时、分、秒、微秒值来创建一个时间对象。import datetime dt = datetime(2018, 6, 24, 16, 56, 45, 13) >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 输出结果: 2018-06-24 16:56:45.000013
-
获取当前时间:使用
today()
或now()
方法可以获取当前的时间。today()
方法返回的是一个不包含时区信息的datetime
对象,而now()
方法可以根据需要返回带有时区信息的对象。dt_today = datetime.today() dt_now = datetime.now() >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 输出结果: 2024-08-02 17:11:08.234040 2024-08-02 17:11:08.234040
1.2、时间的截取和格式化
- 截取时间元组中的部分:你可以直接通过属性访问年、月、日、星期等信息。
import datetime
dt_now=datetime.datetime.now()
print(dt_now.year) # 年
print(dt_now.month) # 月
print(dt_now.day) # 日
print(dt_now.weekday()) # 星期几(0是星期一,6是星期日)
print(dt_now.isoweekday()) # ISO 8601星期几(1是星期一,7是星期日)
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
输出结果:
2024
8
2
4
5
- 格式化时间:
strftime
方法允许你将datetime
对象格式化为字符串。import datetime dt_now=datetime.datetime.now() dt=datetime.datetime.now() formatted_date = dt_now.strftime("%Y-%m-%d") formatted_time = dt_now.strftime("%Y-%m-%d %H:%M:%S") print(formatted_date) print(formatted_time) >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 输出结果: 2024-08-02 2024-08-02 16:12:17
1.3、时间的转换
-
datetime与时间戳之间的转换:可以将
datetime
对象转换为时间戳(自1970年1月1日以来的秒数),或者将时间戳转换回datetime
对象。dt_now=datetime.datetime.now() timestamp = dt_now.timestamp() dt_from_timestamp = datetime.datetime.fromtimestamp(timestamp) print(timestamp) print(dt_from_timestamp) >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 输出结果: 1722845880.191684 2024-08-02 16:18:00.191684
-
字符串与datetime之间的转换:
strptime
方法允许将字符串解析为datetime
对象,前提是字符串符合指定的格式。dt_from_str = datetime.datetime.strptime('2024-8-2 18:19:59.10', '%Y-%m-%d %H:%M:%S.%f') print(dt_from_str) >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 输出结果: 2024-08-02 18:19:59.100000
2、calendar模块
calendar
模块提供了与日历相关的功能,如生成年历、月历,以及判断闰年等。
-
获取年历和月历:
import calendar year_calendar = calendar.calendar(2024) month_calendar = calendar.month(2024, 8) print(year_calendar, month_calendar) >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 输出结果: 2024 January February March Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 1 2 3 4 1 2 3 8 9 10 11 12 13 14 5 6 7 8 9 10 11 4 5 6 7 8 9 10 15 16 17 18 19 20 21 12 13 14 15 16 17 18 11 12 13 14 15 16 17 22 23 24 25 26 27 28 19 20 21 22 23 24 25 18 19 20 21 22 23 24 29 30 31 26 27 28 29 25 26 27 28 29 30 31 April May June Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 1 2 3 4 5 1 2 8 9 10 11 12 13 14 6 7 8 9 10 11 12 3 4 5 6 7 8 9 15 16 17 18 19 20 21 13 14 15 16 17 18 19 10 11 12 13 14 15 16 22 23 24 25 26 27 28 20 21 22 23 24 25 26 17 18 19 20 21 22 23 29 30 27 28 29 30 31 24 25 26 27 28 29 30 July August September Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 1 2 3 4 1 8 9 10 11 12 13 14 5 6 7 8 9 10 11 2 3 4 5 6 7 8 15 16 17 18 19 20 21 12 13 14 15 16 17 18 9 10 11 12 13 14 15 22 23 24 25 26 27 28 19 20 21 22 23 24 25 16 17 18 19 20 21 22 29 30 31 26 27 28 29 30 31 23 24 25 26 27 28 29 30 October November December Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 1 2 3 1 7 8 9 10 11 12 13 4 5 6 7 8 9 10 2 3 4 5 6 7 8 14 15 16 17 18 19 20 11 12 13 14 15 16 17 9 10 11 12 13 14 15 21 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 22 28 29 30 31 25 26 27 28 29 30 23 24 25 26 27 28 29 30 31 August 2024 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
-
判断闰年:
import calendar is_leap_year = calendar.isleap(2024) print(is_leap_year) >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 输出结果: True
结论
在Python全站自动化测试中,
datetime
和calendar
模块是处理时间和日期的强大工具。通过使用这些模块,你可以轻松地创建、格式化、截取、转换时间和日期,以及生成年历和月历,并在自动化测试中使用这些功能来验证系统的时间相关行为。