如何在python中構造時間戳參數


前面有一篇隨筆大致描述了如何在jmeter中生成時間戳,所以這次繼續介紹下在用python做接口測試時,如何構造想要的時間戳參數

1. 目的&思路

本次要構造的時間戳,主要有2個用途:

  • headers中需要傳當前時間對應的13位(毫秒級)時間戳
  • 查詢獲取某一時間段內的數據(如30天前~當前時間)

接下來要做的工作:

  1. 獲取當前日期,如2020-05-08,定為結束時間
  2. 設置時間偏移量,獲取30天前對應的日期,定為開始時間
  3. 將開始時間與結束時間轉換為時間戳

python中生成時間戳的話,可以使用time模塊直接獲取當前日期的時間戳,但是因為需要進行時間偏移,所以我這次並未使用time模塊,而是先用 datetime 模塊獲取當前日期;然后用 datetime  timedelta 來獲取n天前的日期;最后再使用 timestamp() 方法將日期轉換為時間戳

2. 一個簡單易懂的例子

按照上面的思路,時間戳參數創建過程如下

today = datetime.datetime.now()  # 獲取今天時間
print("當前日期是:{}".format(today))
end_time = int(round(today.timestamp()*1000))  # 取今天時間為查詢結束時間,並轉為13位時間戳(int()表示保留整數部分)
offset = datetime.timedelta(days=-30)  # 定義偏移量,即與當前時間的時間間隔
start_time = int(round((today + offset).timestamp()*1000))  # 定義查詢開始時間=當前時間回退30天,轉為時間戳
print("開始日期為:{},對應的時間戳:{}".format(today + offset, start_time))
print("結束日期為:{},對應的時間戳:{}".format(today, end_time))

打印一下結果

當前日期是:2020-05-08 21:03:12.976922
開始日期為:2020-04-08 21:03:12.976922,對應的時間戳:1586350992977
結束日期為:2020-05-08 21:03:12.976922,對應的時間戳:1588942992977

找一個時間戳轉換網站,看看上述生成的開始日期的時間戳是否與原本日期對應

 可以看出來,大致是能對應上的(網上很多人使用round()方法進行了四舍五入,因為我對精度沒那么高要求,所以直接取整了)

需要注意的是:timestamp() 方法默認生成的是10位(秒級)時間戳,如果要轉換為13位(毫秒級)的話,把結果*1000才行

補充timedelta的幾個參數
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM