es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Combine la fecha y la hora en un formato de cadena en un objeto combinado de fecha y hora en Ionic (Angular).

Tengo una fecha y hora en forma de cadena en un proyecto de Ionic de la siguiente manera y quiero combinar ambas para tener un objeto de fecha y hora combinados para poder enviarlo al servidor.

const date = "Fri Jan 07 2022 13:15:40 GMT+0530 (India Standard Time)";
const time = "2:15 PM";

Resultado combinado esperado:

dateTime = 2022-01-07 14:15:00 +0530

Probé este código a continuación pero no funcionó para mí. Estoy obteniendo un error:

“TypeError: date.replace no es una función”

const t1: any = time.split(' ');
const t2: any = t1[0].split(':');
t2[0] = t1[1] === 'PM' ? 1 * t2[0] + 12 : t2[0];
const time24 = (t2[0] < 10 ? '0' + t2[0] : t2[0]) + ':' + t2[1];
const completeDate = date.replace('00:00', time24.toString());

¿Alguien puede ayudarme a lograr este resultado dateTime = 2022-01-07 14:15:00 +0530 a partir de las cadenas de entrada mencionadas anteriormente?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para obtener la salida esperada dateTime = 2022-01-07 14:15:00 +0530 a partir de las cadenas de date y time dadas, puedes seguir los siguientes pasos:

    1. Convierte la cadena date en un objeto Date usando el constructor new Date().
    2. Extrae los componentes de la fecha (año, mes, día) del objeto Date y formatealos como una cadena en el formato deseado (yyyy-MM-dd).
    3. Extrae el componente de la hora (hora, minuto) de la cadena time y formatealos como una cadena en el formato de 24 horas (HH:mm).
    4. Combina los componentes de la fecha y hora para formar una cadena en el formato deseado (yyyy-MM-dd HH:mm:ss +0530).

    Aquí tienes el código para lograr esto:

    const date = "Fri Jan 07 2022 13:15:40 GMT+0530 (India Standard Time)";
    const time = "2:15 PM";
    
    // convertir la cadena de fecha en un objeto Date
    const dateObj = new Date(date);
    
    // extraer los componentes de la fecha y formatear en el formato yyyy-MM-dd
    const year = dateObj.getFullYear();
    const month = ("0" + (dateObj.getMonth() + 1)).slice(-2);
    const day = ("0" + dateObj.getDate()).slice(-2);
    const formattedDate = `${year}-${month}-${day}`;
    
    // extraer los componentes de la hora y formatear en el formato HH:mm
    const [hour, minute] = time.split(":").map((str) => parseInt(str.trim()));
    const formattedHour = (hour < 10 ? "0" : "") + (hour % 12 === 0 ? 12 : hour % 12);
    const formattedMinute = ("0" + minute).slice(-2);
    const formattedTime = `${formattedHour}:${formattedMinute}`;
    
    // combinar los componentes de la fecha y hora para formar la cadena final
    const dateTime = `${formattedDate} ${formattedTime}:00 +0530`;
    
    console.log(dateTime); // imprime "2022-01-07 02:15:00 +0530"
    

    Ten en cuenta que el código anterior asume que la cadena time utiliza el formato AM/PM y que el desplazamiento de la zona horaria es siempre “+0530” (que es el desplazamiento de la zona horaria de India). Si estas suposiciones no son correctas para tu caso de uso, es posible que debas ajustar el código en consecuencia.

Comments are closed.