簡體   English   中英

為數組中的每封電子郵件生成均勻分割的時間戳

[英]Generating evenly split time stamps for every email in an array

我需要生成一個send_at時間,該時間除以工作日早上 6 點至下午 6 點的秒數。

為此,將使用500封電子郵件的列表。

var emailList = ["agent0@email.com", "agent1@email.com", "agent2@email.com", ...]; //List of 500 Emails
var currentTime = new Date().getTime(); //Unix Time Stamp for right now
var day = 86400/2; //12 hours in seconds(6am-6pm)
var interval = Math.ceil(day/emailList.length); // Every 86.4 second for 500 rounded to 87

我只是不知道如何通過這一點。

最終目標:我需要一個函數,它可以獲取一個充滿電子郵件的數組的輸入值,將該 arrays.length 除以上午 6 點至下午 6 點的 12 小時工作日,然后輸出一個數組或時間對象以發送每封電子郵件和也許那封電子郵件也是如此..

輸入: myFuncton(emailList)

輸出: [{email: "agent0@email.com", send_at: 1657559806}, {email: "agent1@email.com", send_at: 1657559893}, {email: "agent2@email.com", send_at: 1657559980}]

遍歷數組,每次添加時間戳的間隔。

 var emailList = ["agent0@email.com", "agent1@email.com", "agent2@email.com"]; var currentTime = new Date().getTime(); //Unix Time Stamp for right now var day = 12 * 60 * 60 * 1000; var interval = Math.ceil(day / emailList.length); var result = []; var send_at= currentTime; emailList.forEach(function(email) { result.push({ email: email, send_at: send_at, human_time: new Date(send_at) }) send_at+= interval; }) console.log(result)

您可以記下時間窗口的startTimeendTime ,然后通過減去它們來計算總timeSpan 然后將總時間除以電子郵件數量來計算intervalLength

由此,您可以使用公式startTime + intervalLength * index計算每封電子郵件的發送時間

 const emailList = Array(500).fill().map((_, i) => 'email_'+i); // Placeholder email list const startTime = new Date().setHours(6, 0, 0, 0) const endTime = new Date(startTime).setHours(18); const timeSpan = endTime - startTime; const intervalLength = timeSpan / emailList.length; const output = emailList.map((email, i) => ({ email, send_at: startTime + intervalLength*i })); console.log(output);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM