Mi aplicación ReactJS actual permite a los usuarios enviar valores de hora, fecha y texto, que se publican en un backend de NodeJS.
Aquí está mi código NodeJS actual:
app.post("/send", function (req, res) { let mailOptions = { from: `${req.body.vals.email}`, to: process.env.EMAIL, subject: 'SUBJECT INFO', html: `${req.body.vals.date} ${req.body.vals.time} ${req.body.vals.info}`, }; transporter.sendMail(mailOptions, function (err, data) { if (err) { res.json({ status: "fail", }); } else { console.log("email sent"); res.json({ status: "success", }); } }); });
Quiero poder programar los correos electrónicos que se enviarán en los valores dados de hora y fecha desde el front-end ReactJS.
He intentado usar node-schedule
pero toda la fecha/hora me desconcertó.
Editar:
Este es el formato de fecha y hora actual que regresa.
fecha: 2022-08-28
hora: 14:07
[editar: la solución actual no funciona]
app.post("/send", function (req, res) { let mailOptions = { from: `${req.body.vals.email}`, to: process.env.EMAIL, subject: 'SUBJECT INFO', html: `${req.body.vals.date} ${req.body.vals.time} ${req.body.vals.info}`, }; const dateParsed = new Date(`${req.body.vals.date}T${req.body.vals.time}Z`) schedule.scheduleJob(dateParsed, function(){ transporter.sendMail(mailOptions, function (err, data) { if (err) { res.json({ status: "fail", }); } else { console.log("email sent"); res.json({ status: "success", }); } }); }) });
No entiendo el problema con la programación de nodos.
La API le permite usar el objeto de fecha en lugar de cron
const schedule = require('node-schedule'); const date = new Date(2012, 11, 21, 5, 30, 0); const job = schedule.scheduleJob(date, function(){ console.log('The world is going to end today.'); });
La forma más fácil que se me ocurre:
const date = '2022-08-28' const time = '14:07' console.log(new Date(`${date}T${time}Z`))
Pero no estoy seguro si es lo mejor.
Además, siempre dará la hora UTC en lugar de la local.
Por lo general, las fechas ya se envían desde la interfaz como ISO.
La solución en mi descripción funciona. El único problema es BST.