¿Qué va a pasar?

En solo tres pasos tu aplicación empresarial comenzará a ser una realidad

Registro
Escuchamos tus necesidades

En la dirección del tiempo

La internacionalización de Velneo y la mayor dependencia de Velneo vServer como centralizador de todos los procedimientos ha tenido consecuencias en todos los ámbitos, entre los que se encuentra también el factor tiempo.Esto nos ha obligado a actualizar las funciones de que disponíamos, trabajo al que nos hemos dedicado al igual que a la revisión completa del Editor de fórmulas, que ya hemos explicado en anteriores artículos (Sintáxis en el Editor de fórmulas, Editor de fórmulas).El resultado ha sido una serie de funciones que contemplan los más diversos aspectos relacionados con el tiempo, desde el formato con funciones específicas que puedan contemplar todos los estilos, hasta funciones que tengan en cuenta las zonas horarias en las que se puede estar.Buscando la máxima compatibilidad del sistema de fechas, éste cumple la norma ISO 8610 referida precisamente a la gestión de las fechas. Entre otras cosas define el formato de fechas, horas, nombres, etc. Por ejemplo, define cómo las semanas de un año se comienzan a contar desde el primer jueves del año siguiendo este convenio. El sistema de referencia de fechas para el calendario gregoriano comienza el 15 de octubre de 1582 y usa el calendario juliano para fechas hasta el 4 de octubre de 1582.FechasComenzamos viendo las referidas a la fecha que usaremos al trabajar con el calendario obteniendo la fecha del sistema, permitiendo comparar, manipular y operar con fechas.

currentDate(), setDate(), stringToDate()Las funciones que nos permiten definir una fecha son currentDate(), setDate() y stringToDate(). La primera nos devuelve la fecha del día, la segunda a partir de los datos día, mes y año establece una fecha y la última nos permite pasar cualquier cadena y extraer de ella los datos de la fecha. Ésta última función que hemos implementado permite una gran versatilidad, ya que nos permite manejar cualquier formato de fecha e introducirlo en nuestro sistema sin problemas, especificando qué cadena es la que contiene la fecha y cuál es el formato que encontramos en la cadena.stringToDate() extrae la fecha de una cadena según las indicaciones del formato:d (1-31) dd (01-31) ddd (Lun-Dom) dddd (Lunes-Domingo)M (1-12) MM (01-12) MMM (Ene-Dic) MMMM (Enero-Diciembre)yy (00-99) yyyy (0000-9999)Un ejemplo:"lunes, 31 de diciembre de 1976" -> "dddd, dd de MMMM de yyyy"dateIsValid()Por otro lado disponemos de una función que nos permite saber si la construcción de una fecha es correcta. La función dateIsValid() retornará true (1) o false (0) en función de si la fecha que hemos pasado como parámetro es correcta, incluyendo la comprobación de si se encuentra en el rango apropiado, no supera el número máximo de días del mes incluyendo el cálculo de bisiestos, etcétera.addDays(), addMonths(), addYears()Este grupo de funciones nos facilita las tareas de añadir o restar días, meses y años a una fecha. Permiten datos negativos, que lo que hacen es, por supuesto, restar en vez de sumar.day(), month(), year(), dayOfWeek(), dayOfYear(), weekOfYear(), daysInMonth(), daysInYear(), quarter(), isLeapYear()Y además, disponemos de otras funciones que nos informan acerca de las fechas que hemos escogido: el día de la fecha, el mes, el año, el día de la semana, el día del año, la semana del año, los días de un mes, los días de un año, el trimestre y el cálculo de bisiestos.dateToString(), dayName(), monthName()No nos podemos olvidar de las funciones que nos permiten generar cadenas a partir de las fechas. La función dateToString(), con la definición de formatos igual que la función complementaria stringToDate(), nos permite formatear la fecha de la forma que queramos a partir del dato de la fecha. dayName() y monthName() nos permiten extraer de forma fácil el nombre del día y del mes a partir de la fecha.age(), daysTo()Por último, también podemos hacer más cálculos que los que ya por sí mismo realiza el calculador como son el cálculo de la edad o los días de diferencia entre dos fechas.HorasVamos a ver ahora las funciones que nos permiten manejar las horas.

currentTime(), setTime(), stringToTime()Al igual que sucede con las fechas disponemos de estas tres funciones que nos permiten crear una hora, bien la hora actual, bien una hora que determinemos o bien una hora obtenida a partir de una cadena. Las horas se manejarán hasta el milisegundo, si así lo permite el sistema (o bien el hardware o bien el sistema operativo), aunque debemos recordar que el campo hora no guarda milisegundos, por lo que debemos crear un campo aparte para guardar ese dato.stringToTime() extrae la hora de una cadena según las indicaciones del formato:h (0-23, 1-12 AM/PM) hh (00-23, 01-12 AM/PM) H (0-23) HH (00-23)m (0-59) mm (00-59)s (0-59) ss (00-59) z (0-999) zzz (000-999)AP (AM/PM) ap (am/pm)timeIsValid()Siguiendo con el paralelismo de las fechas, disponemos también de una función que nos determina si la hora que hemos creado es válida, retornando true (1) o false (0) según sea el caso, avisándonos en el caso de que se salga del rango admitido.addSecondsToHour(), addMSecondsToHour()De nuevo, tenemos funciones que nos permiten realizar cálculos con con la hora, permitiéndonos sumar o restar segundos o milisegundos a una hora, al igual que sucedía con las fechas. Debemos tener en cuenta que si superamos las 00:00 se reiniciará la cuenta.hour(), minute(), second(), msecond()Estas funciones nos permiten extraer de la hora el elemento que necesitemos, incluidos los milisegundos.timeToString()Como sucedía con las fechas, también podemos generar una cadena a partir de la hora, definida con el mismo formato que la función stringToTime().secondsTo(), mSecondsTo()Y por último podemos realizar una serie de cálculos con la hora, como pueden ser conocer la diferencia en segundos o milisegundos entre dos horas distintas.DateTime o TiempoEn V7 estas funciones que manejan al mismo tiempo una fecha y una hora cobran importancia ya que, como comentamos al principio, la internacionalización de la herramienta requiere tener en cuenta casos tan importantes como la gestión de la zona horaria y para ellos se requieren ambos datos, fecha y hora.

Por suerte, ya sabemos cómo manejar fechas y horas, y las funciones que nos vamos a encontrar de nuevo son análogas. Eso sí, con una mayor complejidad al añadir nuevos parámetros a la ecuación.currentDateTime(), currentUTCDateTime(), setDateTime(), stringToDateTime()De nuevo, tenemos funciones para crear tiempos, pero se ha añadido una cuarta que nos devuelve el tiempo universal, es decir, la hora del meridiano de Greenwich (antes conocida como GMT y ahora UTC en el sistema universal). Es decir, a la fecha y hora locales ahora añadimos el dato de la hora en UTC.stringToDateTime() extrae el tiempo de una cadena según las indicaciones del formato:d (1-31) dd (01-31) ddd (Lun-Dom) dddd (Lunes-Domingo)M (1-12) MM (01-12) MMM (Ene-Dic) MMMM (Enero-Diciembre)yy (00-99) yyyy (0000-9999)h (0-23, 1-12 AM/PM) hh (00-23, 01-12 AM/PM) H (0-23) HH (00-23)m (0-59) mm (00-59)s (0-59) ss (00-59) z (0-999) zzz (000-999)AP (AM/PM) ap (am/pm)dateTimeisValid()También tenemos una función que nos devuelve si el tiempo es válido.addMSecondsToDateTime(), addSecondsToDateTime() addDaysToDateTime(), addMonthsToDateTime(), addYearsToDateTime()En el caso del tiempo, podremos hacer cálculos en cualquiera de las unidades que se incluyen en una fecha, desde milisegundos a años, con lo que el control del manejo de fechas y horas es muy amplio.dateTimeToTime(), dateTimeToDate()Para el dato tiempo ya no tenemos funciones que nos extraen la hora, el minuto, el segundo, el día, el mes, etc., si no que debemos primero con estas funciones extraer la fecha y la hora y luego en ambos datos aplicar las funciones de fecha y hora correspondientes, haciendo todo el proceso mucho más sencillo y claro.dateTimeToUTC(), dateTimeToLocale()Además, como comentábamos antes, hemos de tener en cuenta el dato de la zona horaria en el cálculo de tiempos, por lo que hemos incluido dos funciones que nos permiten pasar de la hora UTC a la hora local y viceversa, lo que completa el catálogo de funciones de tiempo.