FUNCIONES PARA CALCULO DE FECHAS EN TYPESCRIPT 您所在的位置:网站首页 组合的函数公式con FUNCIONES PARA CALCULO DE FECHAS EN TYPESCRIPT

FUNCIONES PARA CALCULO DE FECHAS EN TYPESCRIPT

2023-03-14 13:43| 来源: 网络整理| 查看: 265

Hola a todos!.

El post de hoy va de fechas 馃檪

Hace ya algunos a帽os (2015) hice una publicaci贸n en VBA trabajando con trabajaba con algunas funciones para crear y mostrar datos basados en fechas: FUNCI脫N DIASEM, FORMAT, TEXT, DATEDIFF Y DATEDIF PARA CALCULO DE FECHAS EN VBA

Hoy he querido replicar el c谩lculo de esas fechas (excepto la funci贸n SiFecha en su c谩lculo de Edad que ya ten铆a desarrollada en otros post y no quer铆a ser redundante: PROGRAMAR LA FUNCION SIFECHA EN EXCEL ONLINE CON TYPESCRIPT).

Para ello voy a seleccionar algunas de las fechas de ese post inicial y comenzar a calcular:

Como pod茅is observar tenemos una serie de datos sobre la fecha inicial que vamos calculando en cada columna. El valor de la primera columna es nIni (el c贸digo final ver茅is c贸mo lo calculo).

En la columna B vamos a calcular el d铆a de la semana, que en este caso fue un viernes y por lo tanto es el 5潞 d铆a:

var diaSem = nIni.getUTCDay() + 1

En la columna C el nombre del d铆a de la semana:

var nombreDiaSem = nIni.toLocaleDateString("es-ES", { weekday: "long" })

En la columna D el n煤mero del mes:

var mes = (nIni.getUTCMonth() + 1)

En la columna E el nombre del mes:

var nombreMes = nIni.toLocaleDateString("es-ES", { month: "long" })

En la columna F la fecha completa, que vamos a crear con el segundo par谩metro de la funci贸n toLocaleDateString():

const options = { weekday: "long", year: "numeric", month: "long", day: "numeric", }; var fechaCompleta = nIni.toLocaleDateString("es-ES", options)

En la columna G el nombre de d铆a en ingl茅s:

var nombrediaEng = nIni.toLocaleDateString("en-US", { weekday: "long" })

En la columna H el nombre del mes en ingl茅s:

var nombreMesEng = nIni.toLocaleDateString("en-US", { month: "long" })

En la columna I la fecha completa en Ingl茅s:

var fechaCompletaEng = nIni.toLocaleDateString("en-US", options)

En la columna J los a帽os totales entre la fecha inicial y la fecha actual:

var aniosTot = Math.abs(nIni.getUTCFullYear() - (new Date()).getFullYear());

En la columna K los meses totales entre dos fechas:

var mesesTot = (new Date().getFullYear() - nIni.getFullYear()) * 12 + (new Date().getMonth() - nIni.getMonth());

En la columna L los d铆as totales entre dos fechas:

var diasTot = Math.floor((new Date().getTime() - nIni.getTime()) / (1000 * 60 * 60 * 24));

Ahora os dejo el c贸digo completo donde pod茅is ver c贸mo obtengo la fecha del rango inicial de la columna A y como despu茅s de calcular los datos los paso a la hoja:

function main(workbook: ExcelScript.Workbook) { const miHoja = workbook.getWorksheet("Hoja1"); const valores = miHoja.getUsedRange().getValues(); const scadena: (string | number)[][] = [["D脥A SEMANA", "NOMBRE D脥A", "MES", "NOMBRE MES", "FECHA COMPLETA,", "NOMBRE D脥A INGL脡S", "NOMBRE MES INGL脡S", "FECHA COMPLETA INGL脡S", "A脩OS TOTALES", "MESES TOTALES", "DIAS TOTALES"]]; var nItem = 1; valores.splice(1).forEach((row) => { nItem = nItem + 1 //Obtenemos fecha, mes y dia de la columna A var ini = new Date(Math.round((+row[0] - 25569) * 86400 * 1000)).toLocaleDateString("en-US"); var nIni = new Date(Date.parse(ini) + 0 * 24 * 60 * 60 * 1000); //comenzamos a crear variables var diaSem = nIni.getUTCDay() + 1 var nombreDiaSem = nIni.toLocaleDateString("es-ES", { weekday: "long" }) var mes = (nIni.getUTCMonth() + 1) var nombreMes = nIni.toLocaleDateString("es-ES", { month: "long" }) const options = { weekday: "long", year: "numeric", month: "long", day: "numeric", }; var fechaCompleta = nIni.toLocaleDateString("es-ES", options) var nombrediaEng = nIni.toLocaleDateString("en-US", { weekday: "long" }) var nombreMesEng = nIni.toLocaleDateString("en-US", { month: "long" }) var fechaCompletaEng = nIni.toLocaleDateString("en-US", options) var aniosTot = Math.abs(nIni.getUTCFullYear() - (new Date()).getFullYear()); var mesesTot = (new Date().getFullYear() - nIni.getFullYear()) * 12 + (new Date().getMonth() - nIni.getMonth()); var diasTot = Math.floor((new Date().getTime() - nIni.getTime()) / (1000 * 60 * 60 * 24)); //pasamos los datos a una matriz scadena.push([diaSem, nombreDiaSem, mes, nombreMes, fechaCompleta, nombrediaEng, nombreMesEng, fechaCompletaEng, aniosTot, mesesTot, diasTot,] ) }); //pasamos los datos a la hoja const hojaDest = workbook.getWorksheet("Hoja1"); const resultado = hojaDest.getRangeByIndexes(0, 1, scadena.length, scadena[0].length); resultado.setValues(scadena); }

Este es un post que me ha llevado algo de tiempo (he querido que los datos sean los mismos que los que obtendr铆amos con la funci贸n sifecha de Excel (excepto los de Edad).

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


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有