Necesito generar un tiempo de send_at
que se divida uniformemente por los segundos en un día laboral de 6 am a 6 pm.
Por el bien de esto, se utilizará una lista de 500
correos electrónicos.
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
Simplemente no puedo entender cómo pasar este punto.
Objetivo final: necesito una función que pueda tomar un valor de entrada de una matriz llena de correos electrónicos, dividir esa longitud de matrices por el día laboral de 12 horas de 6 am a 6 pm, y luego generar una matriz u objeto de tiempos para enviar cada correo electrónico y tal vez ese correo también...
Entrada: myFuncton(emailList)
Salida: [{email: "agent0@email.com", send_at: 1657559806}, {email: "agent1@email.com", send_at: 1657559893}, {email: "agent2@email.com", send_at: 1657559980}]
Recorra la matriz, agregando cada vez el intervalo para la marca de tiempo.
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)
Puede anotar el tiempo de startTime
y el tiempo de endTime
de la ventana de tiempo y luego calcular el intervalo de tiempo total timeSpan
. Luego divida el tiempo total por la cantidad de correos electrónicos para calcular la longitud del intervalLength
.
A partir de ahí, puede calcular el tiempo de envío de cada correo electrónico con la fórmula 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);