27 junio, 2022

FORMATEAR FECHA SELECCIONADA EN EXCEL CON TYPESCRIPT

Hola a todos!!

Hoy vamos a trabajar con fechas en Typescript en entorno Script Lab. Como ya os he comentado en alguna ocasión, el tratamiento de las fechas con Typescript puede ser complejo, sobre todo cuando venimos de lenguajes de programación como VBA.

En el ejemplo de hoy os voy a mostrar como podemos conseguir formatear una fecha a «dd/mm/aaaa» y realizar otras composiciones con ese formato o pasar una fecha numérica a fecha con literales: «sábado, 31 de diciembre de 2022»

Esto lo podremos hacer con la siguiente función:

/**
 * @customfunction
 * @param {number[][]}
 * @returns {number[][]}
 */
  function fechaLiteral(mifecha) {
    var ini = new Date(Math.round((mifecha - 25569) * 86400 * 1000)).toLocaleDateString("en-US");
    //optenemos la fecha que hemos seleccionado
    var nIni = new Date(Date.parse(ini) + 1 * 24 * 60 * 60 * 1000);
    var fecha = ('0' + nIni.getUTCDate()).slice(-2) + '/'
      + ('0' + (nIni.getUTCMonth() + 1)).slice(-2) + '/'
      + nIni.getUTCFullYear();
    //mostramos la fecha de modo literal
    var date = new Date(ini);
    var opciones = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
    var  fechaLit= date.toLocaleDateString('es-Es', opciones);
    //preparamos los datos en tuplas para mostrar
    var resultado1 = ['Fecha seleccionada', fecha];
    var resultado2 = ['Fecha formateada', fechaLit];
    //pasamos el resultado a la función
    return [resultado1, resultado2]
};

Este código seleccionará un fecha y mostrará la siguiente salida:

El resultado 1, que expresa la fecha según nos interese, es decir, tendremos que componer la fecha como necesitemos, tan solo hay que concatenar la cadena: en este ejemplo va el día/mes/año. Pero podríamos formatear pro ejemplo: año/mes/día

var fecha = ('0' + nIni.getUTCDate()).slice(-2) + '/'
      + ('0' + (nIni.getUTCMonth() + 1)).slice(-2) + '/'
      + nIni.getUTCFullYear();

La segunda salida es el resultado 2, donde utilizando uno de los parámetros de la función toLocaleDateString(), vamos a especificar de la fecha que hemos seleccionado (y transformado), el día de la semana, el mes del año, el año y el día

var date = new Date(ini);
    var opciones = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
    var  fechaLit= date.toLocaleDateString('es-Es', opciones);

El resultado es el siguiente:

Es posible que tengáis que realizar otro tipo de formatos, pero ya los iremos viendo poco a poco. De momento os dejo este post.

Y esto es todo!!. Espero que sea de utilidad.

¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.

Donate Button with Credit Cards

¡¡Muchas gracias!!

Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies

Comparte este post

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies