Cómo calcular el último día del mes en Visual Basic

En la programación, a menudo es necesario calcular el último día del mes para propósitos como sistemas de contabilidad y aplicaciones de registro de tiempo de los empleados. He notado que los programadores utilizan diferentes trucos para hacer esto, a menudo utilizando funciones semi-hardcodeadas que calculan el último día del mes de la siguiente manera: primero, la función verifica el mes de la fecha proporcionada. Si el mes es enero, marzo, mayo, julio, agosto, octubre o diciembre, la función devuelve 31. Si el mes es abril, junio, septiembre o noviembre, la función devuelve 30. Si el mes es febrero, la función devuelve 28. El código se ve algo así:

Private Function SetDates (pDate As Date) As String
    Select Case Month (pDate)
        Case 1, 3, 5, 7, 8, 10, 12
            SetDates = "31"
        Case 4, 6, 9, 11
            SetDates = "30"
        Case 2
            If (Year(pDate) Mod 4) = 0 Then
                SetDates = "29"
            Else
                SetDates = "28"
            End If
    End Select
End Function

En este artículo, te mostraré una solución mucho más simple y elegante para determinar el último día de un mes.

Índice de Contenido
  1. Código de ejemplo
  2. Funcionamiento interno

Código de ejemplo

Primero, crearemos un proyecto en VB para descubrir el primer y último día de cualquier mes dado mediante los siguientes pasos:

  1. Inicia VB y crea un nuevo proyecto.
  2. Agrega tres etiquetas: un control de selección de fecha y hora (dtDate) y dos cajas de texto (txtMonthStart y txtMonthEnd). Establece la propiedad Enabled de las cajas de texto en False. Tu pantalla debería verse como en la Figura A.

Cómo calcular el último día del mes en Visual Basic - Desarrollo | Imagen 1 Newsmatic

  1. Agrega el siguiente código al evento dtDate_Change():
Call SetDates
  1. Agrega el siguiente código al evento Form_Load():
dtDate.Value = Date  'obtener la fecha de hoy
Call SetDates
  1. Agrega la función Private Sub SetDates() con el siguiente código:
Dim sDayFirst As String, sDayLast As String, sMonth As String, sYear As String
sDayLast = GetLastDayOfMonth(dtDate.Value)
sDayFirst = "01"
sYear = Year(dtDate.Value)
sMonth = Month(dtDate.Value)
txtMonthEnd.Text = sMonth & "/" & sDayLast & "/" & sYear
txtMonthStart.Text = sMonth & "/" & sDayFirst & "/" & sYear
  1. Agrega la función Private Function GetLastDayOfMonth(pDate As Date) con el siguiente código:
GetLastDayOfMonth = Day(DateSerial(Year(pDate), Month(pDate) + 1, 0))
  1. Pulsa [Ctrl][F5] para ejecutar el proyecto y verás una pantalla como la de la Figura B.

Cómo calcular el último día del mes en Visual Basic - Desarrollo | Imagen 2 Newsmatic

Ahora, cambia la fecha en la parte superior del formulario a un mes y/o año diferente, y verás que los valores en las dos cajas de texto se han actualizado para mostrar el primer y último día del mes de la fecha que especificaste. Veamos cómo funciona el código en detalle.

Cómo reemplazar un archivo con el comando REPLACE en Windows

Funcionamiento interno

Calcular el último día de un mes es una tarea bastante sencilla. En el evento Form_Load, establecemos el valor del control dtDate en la fecha de hoy. Después de eso, llamamos al procedimiento SetDates, donde llamamos a una función para obtener el último día del mes (GetLastDayOfMonth).

Pasamos el valor de dtDate a GetLastDayOfMonth. Después de que GetLastDayOfMonth devuelve el último día de un mes en particular, establecemos las propiedades de texto de txtMonthEnd y txtMonthStart en una fecha completa creando una cadena con el valor del mes seleccionado en dtDate, el valor del día devuelto por GetLastDayOfMonth para txtMonthEnd, "01" para txtMonthStart y el valor del año seleccionado en dtDate. Usamos "01" porque cualquier mes comenzará en el primero.

En el evento change del control dtDate, también llamamos al procedimiento SetDates para actualizar las propiedades de texto de las cajas de texto.

Ahora veamos qué sucede en la función GetLastDayOfMonth. Para obtener el último día del mes, utilizamos la función integrada de VB DateSerial, que devuelve un valor de fecha para un año, mes y día especificados. La función espera tres argumentos (un año, un mes y un día). Luego, utilizamos la función integrada Day para determinar el valor real del último día del mes.

Se pasa un valor de dtDate a la función. En GetLastDayOfMonth, determinamos el año y el mes de la fecha pasada (pDate). Luego, pasamos los siguientes argumentos a la función DateSerial: el año, el mes (le sumamos 1 al valor del mes) y 0. Si hoy es 19/08/02, el valor devuelto por la declaración DateSerial(Year(pDate), Month(pDate) + 1, 0) sería 31/08/02. Utilizamos la función Day para obtener el día de la fecha resultante, que en nuestro caso devolvería 31.

Observa, sin embargo, que usamos Month(pDate) + 1, lo que nos da el valor del mes 9, no 8, y también especificamos el valor del día como 0. Ese es el truco. La función DateSerial interpretará esto y devolverá el último día del mes 8, no 9, que es exactamente lo que queremos obtener.

Por qué utilizar un iterador en Java en lugar de una lista o un array

En este ejemplo, hemos demostrado una forma simple de obtener el último día de un mes con solo unas pocas líneas de código. La versión completa del código de ejemplo está disponible en el Listado A.

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Desarrollo, allí encontraras muchos artículos similares a Cómo calcular el último día del mes en Visual Basic , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.