Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

290
Vistas
Formato de tiempo de Nodo-PostgreSQL

Tengo dos tablas nombradas en usuarios y card_info en mi base de datos de Postgres. Creé un punto final para registrar nuevos usuarios y le di un campo llamado dateCreated como se muestra en el código a continuación.

Registro.js

 const handleRegister=(req,res,db,bcrypt,saltRounds)=>{ const {name,phno,dob,email,username,password,aadharCard}=req.body; if(!name || !email|| !phno || !dob || !username || !password || !aadharCard){ return res.status(400).json('Wrong Form Submission'); } const hash=bcrypt.hashSync(password,saltRounds); const accNo=Math.floor(2E9+Math.random()*1E9); const dateCreated=new Date().toJSON().slice(0,10); db('users') .insert({ username:username, name:name, email:email, password:hash, dob:dob, phno:phno, aadhar:aadharCard, acc_no:accNo, created_date:dateCreated }) .returning('*') .then(users=>{ res.json(users[0]); }) .catch(err=>res.status(400).json("Unable to register")); } module.exports={ handleRegister:handleRegister }

En el punto final de la tarjeta, estoy seleccionando el año de creación del usuario cuya identificación se envía como solicitud. Luego almaceno estos valores en la tabla card_info usando valores calculados. Se supone que la fecha de caducidad es 4 años más que el año_creado. La identificación de los usuarios de la tabla es una clave externa de la tabla card_info

Tarjeta.js

 const genCard=(req,res,db)=>{ const {id,cardType} =req.body; db.select('created_date').from('users').where("id","=",id) .then(data=>{ const createdDate=data[0].created_date.toString(); db('card_info') .insert({ card_number:Math.floor(Math.random()*1E17), owner_id:id, expiration_date: createdDate.replace(parseInt(createdDate),parseInt(createdDate)+4), cvv:Math.floor(Math.random()*1E3), card_type:cardType }) .returning('*') .then(users=>{ console.log(res.json(users[0])); }) .catch(err=>res.json(err.message)) }) .catch(err=>res.json(err)); } module.exports={ genCard }

Captura de pantalla del cartero

Este es el error que recibo: "insertar en "card_info" ("card_number", "card_type", "cvv", "expiration_date", "owner_id") valores ($1, $2, $3, $4, $5) regresando * - zona horaria "gmt+0300" no reconocida".

He probado varios métodos de formateo de fecha pero nada parece funcionar. Por favor, hágamelo saber si alguien tiene una solución a esto.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Evitaría todos los intentos de manipular cadenas que representan fechas; solo resulta en lágrimas y, a menudo, no considera los casos extremos. Más bien manipule la fecha directamente. Recomendaría Luxon que proporciona un envoltorio probado en batalla alrededor de la Date y tiene funciones convenientes que facilitan el manejo de las fechas.

 // convert to DateTime object const createdDate = DateTime.fromJSDate(data[0].created_date); // add 3 months const futureDate = createdDate.plus({months: 3}); // insert a date object db('card_info').insert({ card_number:Math.floor(Math.random()*1E17), ... created: futureDate, // or futureDate.toJSDate() })

Manifestación:

 const { DateTime } = luxon; // convert a saved date from the DB to DateTime const dt = DateTime.fromJSDate(new Date()); // add 3 months const futureDate = dt.plus({ months: 3 }); console.info(futureDate.toFormat('yyyy-MM-dd'), futureDate.toJSDate());
 <script src="https://cdn.jsdelivr.net/npm/luxon@2.0.2/build/global/luxon.min.js"></script>

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda