Anuncios

Bienvenidos sean a este post, hoy nos centraremos en ver como podemos manipular el tiempo ya sea tanto la fecha como la hora.

Si bien en el post anterior vimos como formatear una cadena o un valor a hora o fecha en este caso vamos a trabajar con valores que representan estos tipos de datos, para comenzar hablemos de los mas basicos.

Anuncios

Time / Date

Son los tipos mas basicos que vamos a encontrar los cuales nos permitiran asignar la hora y fecha actuales respectivamente, veamos un simple ejemplo:

fecha = date
hora = time
Anuncios

En este caso asignaremos a dos variables el valor de la fecha en ese instante, por medio de date, y el de la hora de ese instante, por medio de time, si mostramos los valores se veran de la siguiente forma

Siempre va a ser el mismo formato, salvo que usemos el formateador del post anterior, con esto podemos obtener los datos de la hora y fecha por separados pero que sucede si necesito los dos juntos, podemos concatenar los resultados o usar la siguiente funcion.

Anuncios

now

Esta funcion hace exactamente lo mismo que antes pero nos devuelva los dos valores para una misma variable, veamos el siguiente ejemplo:

fechaHora = now
Anuncios

Si mostramos el valor de esta variable sera de la siguiente manera

Anuncios

Dependiendo donde debemos aplicarlo, por ejemplo un log de seguridad, puede resultar mas practico que tener que tomar dos valores y concatenarlos para obtener el mismo resultado y desperdiciando ciclos de la computadora, si bien puede parecer muy poco y no tener relevancia pero pueden juntarse multiples consultas y la sumatoria de estos ciclos desperdiciados puede afectar la performance.

Anuncios

Continuando con las formatos, para especificar una fecha de forma correcta se utiliza la siguiente sintaxis:

variable = # 09/12/2019 #
Anuncios

El dato de la variable siempre debe ir entre numerales (#) para decirle al lenguaje que el dato ingresado es de este tipo, en cambio si nosotros lo ingresaramos con comillas le indicamos que es un tipo cadena y no fecha, para ingresar una fecha siempre se debe respetar el formato configurado en el Sistema Operativo, por ejemplo:

  • DD/MM/YYYY, siempre es dia / mes / año completo
  • MM/DD/YYYY, siempre es mes / dia / año completo
  • MM-DD-YYYY, igual al anterior pero con guiones en lugar de barras
Anuncios

En fin estas son algunas de las posibilidades pero siempre deberemos respetar el formato para ingresarlo, otra buena practica es siempre ingresar el año completo (aunque algun sistema no lo tenga configurado) porque esto nos evita problemas de interpretacion entre el 1900 y el 2000 que se pueden superponer.

Nota: Recuerden que VBScript cuenta del 1 de Enero del 100 hasta el 31 de Diciembre de 9999.

En este post, mencionamos al metodo CDate para convertir una variable en el tipo fecha pero tambien disponemos de dos funciones para esto.

Anuncios

DateValue / TimeValue

Esta funcion se encarga de convertir valores en tipo fecha al igual que Cdate pero con esta funcion no solamente podremos convertirlas sino tambien validar que sean fechas correctas, veamos su sintaxis:

datevalue("fecha")
Anuncios

Donde en fecha pasaremos el tipo de fecha a convertir, para ello veamos el siguiente ejemplo:

tiempo.vbs

fecha1 = datevalue("09/12/2019")
fecha2 = datevalue("09/diciembre/2019")
fecha3 = datevalue("09/dic/2019")

msgbox fecha1 & vbCrLf & fecha2 & vbCrLf & fecha3 & vbCrLf
Anuncios

En este caso vemos los tres formatos validos que podemos usar para convertir una cadena pasada a datevalue en un tipo date (fecha) valido para el lenguaje, como pueden observar se puede usar el numero del mes, el nombre completo y su abreviacion, si lo ejecutamos veremos lo siguiente

En este caso observen como las tres variables tienen el mismo valor, lo cual nos permitira trabajar sin ningun inconveniente con la fecha, para el caso de la hora se utiliza a timevalue en lugar de datevalue, tiene la misma sintaxis y produce el mismo resultado pero con la hora para ello modifiquemos el ejemplo anterior de la siguiente manera:

hora1 = timevalue("11:11:11")
hora2 = timevalue("11:11 pm")

msgbox hora1 & vbCrLf & hora2
Anuncios

En este caso trabajamos con horas, en los dos formatos que son mas comunes de consultar, si lo ejecutamos veremos lo siguiente

Vean como en el segundo caso tomo el p.m de la hora y lo convirtio en un formato de 24 Hs, pasemos a las siguientes funciones.

Anuncios

DateSerial / TimeSerial

Anuncios

Estas dos funciones a diferencia de las anteriores no reciben una fecha o una hora completa y la convierten en formato date sino que reciben los argumentos y generan el dato correspondiente, primero veamos la sintaxis de DateSerial:

dateserial(año, mes, dia)
Anuncios

En este caso es una sintaxis simple donde primero ingresamos el año, luego el mes y finalmente el dia, esta es la estructura siempre ya que la funcion se encargara de ubicarlo segun nuestra configuracion local, tomemos el ejemplo y modifiquemos el codigo de la siguiente manera:

dim f

fecha = date
f = split(fecha,"/")
dia = dateserial(f(2) + 5, f(1) - 2, f(0) + 13)

msgbox formatdatetime(dia, vbLongDate)
Anuncios

En este caso primero vamos a asignar la fecha actual a fecha, luego vamos a dividirlo con split en las tres partes (dia, mes y año), luego vamos a usar una variable llamada dia donde crearemos una nueva fecha, para este caso tomo los valores generados por el split, como pueden ver es un array, y a cada uno le aplico una operacion arimetica, al año, f(2), le sumo 5; al mes, f(1) le resto 2 y al dia, f(0), le sumo 13, y por ultimo mostramos el resultado en pantalla, si lo probamos se vera lo siguiente

Nota: La fecha de este ejemplo puede variar con respecto al de ustedes.

Esta es una utilidad practica de dateserial que nos permite poder aplicar operaciones de tipo arimetica para generar fechas en el futuro o en el pasado en el caso de ser necesario, tambien fue una buena oportunidad para aplicar conocimientos anteriores.

Anuncios

TimeSerial es exactamente lo mismo pero para las horas, en el caso de esta funcion la sintaxis es:

timeserial(hora, minutos, segundos)

En este caso un simple ejemplo de esta funcion seria usar:

timeserial(11, 23, 58)

Donde nos generara la hora 11:23:58, es tan simple como eso y soporta las mismas operaciones que en el caso de dateserial.

Anuncios

En resumen, hoy hemos visto como se puede manipular la fecha y la hora en VBScript, como se captura la fecha y/o hora actual, las funciones que tenemos disponibles, como se declaran, como convertirlas en formato de fechas validas, como manipularlas, y para que se pueden usar, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes comprar mi libro sobre VBscript en Amazon

Tambien podes donar

Es para mantenimiento del sitio, gracias!

$1.00