Detectar el primer día del mes
En un artículo anterior de nuestro blog, hablamos de cómo podemos trabajar con la fecha y hora de las barras del histórico a la hora de desarrollar sistemas. Pueden encontrar la información relativa a dicho artículo pulsando aquí.
A continuación, vamos a ampliar esta información a través del uso de un método con el cual podamos extraer, de forma separada, los distintos campos de fecha: día, mes o año.
Extraer los campos de la fecha
Como en su momento explicamos, la función .TIMEEX (sólo para Visual Chart 5) nos devuelve la fecha de cada barra siguiendo el formato dd/mm/yyyy hh:mm:ss.
Pero: ¿Cómo podemos hacer para estudiar por separado, por ejemplo, el mes de cada barra?
La solución la encontramos utilizando la función Datepart perteneciente a las librerías de Visual Basic.
DatePart es una función que devuelve el valor (numérico) del componente especificado de un valor de fecha dado. Su declaración sería del siguiente modo:
X = DATEPART(Interval As String, DateValue As DateTime)
El componente especificado es lo que vamos a usar para poder elegir entre extraer el mes, el año, el día, etc... Para más información acerca de este método pueden consultar la página oficial de Microsoft.
Ejemplo detectar primer día del mes
Supongamos que necesitamos localizar el primer día de cada mes, ¿Cómo detectaríamos esta barra?
Para encontrar la solución, pasaríamos primero por extraer de cada barra el valor de mes del siguiente modo:
Hay que recordar que en MesBar guardamos un valor númerico de 1 a 12.
Siguiendo con el ejemplo, como lo que queremos es detectar cuando se produce el cambio de mes, haríamos lo siguiente:
Es decir, comparamos el mes de la barra actual con el mes de la barra anterior y buscamos la barra que cambie.
Detectar cambio de mes usando la Plataforma Visual
Si nuestro sistema está desarrollado en PDV, tenemos el inconveniente de que el acceso a la función TIMEEX no es tan directa como cuando trabajamos sobre Visual Basic.
Para facilitar el acceso a esta información, lo más sencillo es diseñar un indicador que nos extraiga directamente el dato y luego usar dicho indicador desde nuestro sistema. Así nos ahorraremos tener que añadir las funciones asociadas al tiempo.
En el siguiente enlace, podrán encontrar un indicador que devuelve el valor numérico del mes de cada barra. Pueden descargar el archivo pulsando sobre dicho enlace:
Indicador Cambio de Mes
Si seguimos con el ejemplo, lo que haríamos en este caso sería añadir el indicador a nuestro sistema:
Y luego acceder a su información para poder detectar el cambio de mes:
Hemos estado usando como ejemplo el cambio de mes, pero podemos usar la función DatePart para detectar el año, el día, o los campos horarios.
A continuación, vamos a ampliar esta información a través del uso de un método con el cual podamos extraer, de forma separada, los distintos campos de fecha: día, mes o año.
Extraer los campos de la fecha
Como en su momento explicamos, la función .TIMEEX (sólo para Visual Chart 5) nos devuelve la fecha de cada barra siguiendo el formato dd/mm/yyyy hh:mm:ss.
Pero: ¿Cómo podemos hacer para estudiar por separado, por ejemplo, el mes de cada barra?
La solución la encontramos utilizando la función Datepart perteneciente a las librerías de Visual Basic.
DatePart es una función que devuelve el valor (numérico) del componente especificado de un valor de fecha dado. Su declaración sería del siguiente modo:
X = DATEPART(Interval As String, DateValue As DateTime)
El componente especificado es lo que vamos a usar para poder elegir entre extraer el mes, el año, el día, etc... Para más información acerca de este método pueden consultar la página oficial de Microsoft.
Ejemplo detectar primer día del mes
Supongamos que necesitamos localizar el primer día de cada mes, ¿Cómo detectaríamos esta barra?
Para encontrar la solución, pasaríamos primero por extraer de cada barra el valor de mes del siguiente modo:
MesBar = DatePart("m", .TimeEx)
Hay que recordar que en MesBar guardamos un valor númerico de 1 a 12.
Siguiendo con el ejemplo, como lo que queremos es detectar cuando se produce el cambio de mes, haríamos lo siguiente:
Public Sub Indicator_OnCalculateBar(ByVal Bar As Long)
With APP
Dim MesBar As Integer: Dim MesBarAnt As Integer
MesBar = DatePart("m", .TimeEx)
MesBarAnt = DatePart("m", .TimeEx(1))
If MesBar <> MesBarAnt Then
'es cambio de mes
End If
Es decir, comparamos el mes de la barra actual con el mes de la barra anterior y buscamos la barra que cambie.
Detectar cambio de mes usando la Plataforma Visual
Si nuestro sistema está desarrollado en PDV, tenemos el inconveniente de que el acceso a la función TIMEEX no es tan directa como cuando trabajamos sobre Visual Basic.
Para facilitar el acceso a esta información, lo más sencillo es diseñar un indicador que nos extraiga directamente el dato y luego usar dicho indicador desde nuestro sistema. Así nos ahorraremos tener que añadir las funciones asociadas al tiempo.
En el siguiente enlace, podrán encontrar un indicador que devuelve el valor numérico del mes de cada barra. Pueden descargar el archivo pulsando sobre dicho enlace:
Indicador Cambio de Mes
Si seguimos con el ejemplo, lo que haríamos en este caso sería añadir el indicador a nuestro sistema:
Y luego acceder a su información para poder detectar el cambio de mes:
Hemos estado usando como ejemplo el cambio de mes, pero podemos usar la función DatePart para detectar el año, el día, o los campos horarios.
Comentarios
Publicar un comentario
¡Gracias!