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.
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
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.
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
Si mostramos el valor de esta variable sera de la siguiente manera

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.
Continuando con las formatos, para especificar una fecha de forma correcta se utiliza la siguiente sintaxis:
variable = # 09/12/2019 #
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
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.
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")
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
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
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.
DateSerial / TimeSerial
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)
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)
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.
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.
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.
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.50