首先引入Unix纪元时间戳的概念:即格林威治时间(GMT,Greenwich Mean Time)1970年1月1日00:00:00,到当前时间的秒数。单位为秒(s)。
那么当前时间的Unix纪元时间戳在python中怎么表达的呢?先看看如下案例:
上面我们看到这个日期框里面输入的值为日期格式(2019-10-19 23:59),输入参数后我们点击“发布个人作业”按钮后,通过F12查看到这个发布作业的接口的请求参数如下图:
发现endtime这个值跟我们前台传入的值不一样,这里它就用到了Unix纪元时间戳的表达方式,我们在做接口测试的时候,遇到这个问题该如何解决呢?
在python里,我们引入time和datetime模块,它们都是内置模块,无需安装
问题思考:1.如何将Unix纪元时间戳转换为日期格式?
2.如何将日期格式转换为Unix纪元时间戳?
通过以下代码演示如何转换:
1.将Unix纪元时间戳转换为日期格式,使用datetime.fromtimestamp()方法
import time from datetime import datetime # Unix纪元时间戳转换为datetime日期格式 now_time = time.time() date_now_time = datetime.fromtimestamp(now_time) str_now_time = datetime.strftime(date_now_time, "%Y-%m-%d %H:%M:%S") print(str_now_time, type(str_now_time))
2.将日期格式转换为Unix纪元时间戳,使用datetime.timestamp()方法
from datetime import datetime # datetime日期格式转换为Unix纪元时间戳 now_time = datetime.now() datetime_after_seven_day = round(datetime.timestamp(now_time)) print(datetime_after_seven_day, type(datetime_after_seven_day))
案例上的日期我们不能输入当前日期,必须要填入未来的日期,这个又该如何处理呢?datetime.datetime格式的数据可以通过datetime.timedelta()进行日期的加减操作,假如我们要将当前的日期加上7天,使用如下方法即可实现:
from datetime import datetime, timedelta # datetime日期格式转换为Unix纪元时间戳 now_time = datetime.now() print(now_time, type(now_time)) after_seven_day = now_time + timedelta(days=7) print(after_seven_day, type(after_seven_day)) datetime_after_seven_day = round(datetime.timestamp(after_seven_day)) print(datetime_after_seven_day, type(datetime_after_seven_day))