Introducción
La clase LocalDate
en Java8 proporciona múltiples métodos para manipular valores de fecha. Un método de este tipo es withMonth()
, que devuelve una nueva instancia de LocalDate
después de cambiar o establecer el mes del año.
💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí
La clase LocalDate
en Java8 proporciona múltiples métodos para manipular valores de fecha. Un método de este tipo es withMonth()
, que devuelve una nueva instancia de LocalDate
después de cambiar o establecer el mes del año.
El primer paso es crear una instancia de LocalDate
en Java. La clase LocalDate
se encuentra en el paquete java.time, por lo que incluiremos el paquete al principio de nuestro archivo de código. La clase LocalDate
proporciona un método of()
que puede crear una nueva instancia de LocalDate
.
import java.time.LocalDate;
public class LocalDateWithMonthMethodExample {
public static void main(String[] args) {
// creando una nueva instancia de LocalDate
LocalDate date = LocalDate.of(2022, 10, 12);
// imprimiendo la fecha original
System.out.println("Fecha original: " + date);
}
}
Utilice el siguiente comando para compilar y ejecutar el código en la terminal:
javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample
El método withMonth()
devuelve una nueva instancia de LocalDate
con el mes del año establecido en el valor proporcionado como argumento.
Podemos establecer un mes del año diferente utilizando el método withMonth()
y obtener una fecha recién creada. Aquí estamos estableciendo el mes del año en 4 y obteniendo la nueva fecha.
// estableciendo el mes del año en 4 y obteniendo la nueva fecha
LocalDate newDate = date.withMonth(4);
// imprimiendo la nueva fecha
System.out.println("Nueva Fecha: " + newDate);
Aquí está el código completo:
import java.time.LocalDate;
public class LocalDateWithMonthMethodExample {
public static void main(String[] args) {
// creando una nueva instancia de LocalDate
LocalDate date = LocalDate.of(2022, 10, 12);
// imprimiendo la fecha original
System.out.println("Fecha original: " + date);
// estableciendo el mes del año en 4 y obteniendo la nueva fecha
LocalDate newDate = date.withMonth(4);
// imprimiendo la nueva fecha
System.out.println("Nueva Fecha: " + newDate);
}
}
Utilice el siguiente comando para compilar y ejecutar el código en la terminal:
javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample
Debería ver la siguiente salida:
Fecha original: 2022-10-12
Nueva Fecha: 2022-04-12
Si el valor de mes pasado al método withMonth()
es no válido, es decir, fuera del rango [1, 12], lanzará una DateTimeException
.
A continuación, se presenta un ejemplo que demuestra cómo manejar un valor de mes no válido.
import java.time.DateTimeException;
import java.time.LocalDate;
public class LocalDateWithMonthMethodExample {
public static void main(String[] args) {
// creando una nueva instancia de LocalDate
LocalDate date = LocalDate.of(2022, 10, 12);
// imprimiendo la fecha original
System.out.println("Fecha original: " + date);
try {
// intentando establecer un valor de mes no válido (13)
LocalDate newDate = date.withMonth(13);
// imprimiendo la nueva fecha
System.out.println("Nueva Fecha: " + newDate);
} catch(DateTimeException ex) {
System.out.println("Valor de mes no válido proporcionado: " + ex.getMessage());
}
}
}
Utilice el siguiente comando para compilar y ejecutar el código en la terminal:
javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample
Debería ver la siguiente salida:
Fecha original: 2022-10-12
Valor de mes no válido proporcionado: Valor no válido para MonthOfYear (valores válidos 1 - 12): 13
El método withMonth()
devuelve una nueva instancia de LocalDate
con el valor del mes del año establecido en el nuevo valor, y no cambia la instancia de fecha original. Si desea cambiar el valor del mes del año en la fecha original, debe asignar el valor devuelto por withMonth()
de nuevo a la instancia de fecha original, como se muestra a continuación:
// cambiando el mes del año en la instancia de fecha original
date = date.withMonth(11);
// imprimiendo la fecha actualizada
System.out.println("Fecha actualizada: " + date);
Aquí está el código completo:
import java.time.LocalDate;
public class LocalDateWithMonthMethodExample {
public static void main(String[] args) {
// creando una nueva instancia de LocalDate
LocalDate date = LocalDate.of(2022, 10, 12);
// imprimiendo la fecha original
System.out.println("Fecha original: " + date);
// estableciendo el mes del año en 5 y obteniendo la nueva fecha
LocalDate newDate = date.withMonth(5);
// imprimiendo la nueva fecha
System.out.println("Nueva Fecha: " + newDate);
// cambiando el mes del año en la instancia de fecha original
date = date.withMonth(11);
// imprimiendo la fecha actualizada
System.out.println("Fecha actualizada: " + date);
}
}
Utilice el siguiente comando para compilar y ejecutar el código en la terminal:
javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample
Debería ver la siguiente salida:
Fecha original: 2022-10-12
Nueva Fecha: 2022-05-12
Fecha actualizada: 2022-11-12
Si el día del mes es no válido para el año al cambiar el mes, se cambiará al último día válido del nuevo mes. Por ejemplo, si cambiamos el mes del año de febrero a abril en un año bisiesto, el valor del día se ajustará automáticamente al último día válido de abril.
// creando una nueva instancia de LocalDate
LocalDate date = LocalDate.of(2024, 2, 29);
// imprimiendo la fecha original
System.out.println("Fecha original: " + date);
// estableciendo el mes del año en abril
LocalDate newDate = date.withMonth(4);
// imprimiendo la nueva fecha
System.out.println("Nueva Fecha: " + newDate);
Aquí está el código completo:
import java.time.LocalDate;
public class LocalDateWithMonthMethodExample {
public static void main(String[] args) {
// creando una nueva instancia de LocalDate
LocalDate date = LocalDate.of(2024, 2, 29);
// imprimiendo la fecha original
System.out.println("Fecha original: " + date);
// estableciendo el mes del año en abril
LocalDate newDate = date.withMonth(4);
// imprimiendo la nueva fecha
System.out.println("Nueva Fecha: " + newDate);
}
}
Utilice el siguiente comando para compilar y ejecutar el código en la terminal:
javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample
Debería ver la siguiente salida:
Fecha original: 2024-02-29
Nueva Fecha: 2024-04-30
Podemos usar el método withMonth()
en un bucle para generar una lista de fechas con diferentes valores de mes del año. A continuación, se presenta un ejemplo que genera fechas para cada mes del año 2022:
// generando fechas para cada mes del año 2022
for (int month = 1; month <= 12; month++) {
LocalDate date = LocalDate.of(2022, month, 1);
System.out.println("Fecha para " + date.getMonth() + ": " + date);
}
Aquí está el código completo:
import java.time.LocalDate;
public class LocalDateWithMonthMethodExample {
public static void main(String[] args) {
// generando fechas para cada mes del año 2022
for (int month = 1; month <= 12; month++) {
LocalDate date = LocalDate.of(2022, month, 1);
System.out.println("Fecha para " + date.getMonth() + ": " + date);
}
}
}
Utilice el siguiente comando para compilar y ejecutar el código en la terminal:
javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample
Debería ver la siguiente salida:
Fecha para ENERO: 2022-01-01
Fecha para FEBRERO: 2022-02-01
Fecha para MARZO: 2022-03-01
Fecha para ABRIL: 2022-04-01
Fecha para MAYO: 2022-05-01
Fecha para JUNIO: 2022-06-01
Fecha para JULIO: 2022-07-01
Fecha para AGOSTO: 2022-08-01
Fecha para SEPTIEMBRE: 2022-09-01
Fecha para OCTUBRE: 2022-10-01
Fecha para NOVIEMBRE: 2022-11-01
Fecha para DICIEMBRE: 2022-12-01
El método getMonthValue()
se utiliza para obtener el valor del mes del año de una fecha. A continuación, se presenta un ejemplo que demuestra cómo usar los métodos withMonth()
y getMonthValue()
para cambiar y obtener el valor del mes del año de una fecha:
// creando una nueva instancia de LocalDate
LocalDate date = LocalDate.of(2022, 11, 15);
// imprimiendo la fecha original
System.out.println("Fecha original: " + date);
// obteniendo el valor del mes del año
int originalMonthValue = date.getMonthValue();
// cambiando el mes del año a 10
date = date.withMonth(10);
// obteniendo el nuevo valor del mes del año
int newMonthValue = date.getMonthValue();
// imprimiendo la fecha y los valores del mes actualizados
System.out.println("Fecha actualizada: " + date);
System.out.println("Valor original del mes: " + originalMonthValue);
System.out.println("Nuevo valor del mes: " + newMonthValue);
Aquí está el código completo:
import java.time.LocalDate;
public class LocalDateWithMonthMethodExample {
public static void main(String[] args) {
// creando una nueva instancia de LocalDate
LocalDate date = LocalDate.of(2022, 11, 15);
// imprimiendo la fecha original
System.out.println("Fecha original: " + date);
// obteniendo el valor del mes del año
int originalMonthValue = date.getMonthValue();
// cambiando el mes del año a 10
date = date.withMonth(10);
// obteniendo el nuevo valor del mes del año
int newMonthValue = date.getMonthValue();
// imprimiendo la fecha y los valores del mes actualizados
System.out.println("Fecha actualizada: " + date);
System.out.println("Valor original del mes: " + originalMonthValue);
System.out.println("Nuevo valor del mes: " + newMonthValue);
}
}
Utilice el siguiente comando para compilar y ejecutar el código en la terminal:
javac LocalDateWithMonthMethodExample.java && java LocalDateWithMonthMethodExample
Debería ver la siguiente salida:
Fecha original: 2022-11-15
Fecha actualizada: 2022-10-15
Valor original del mes: 11
Nuevo valor del mes: 10
En este laboratorio, aprendiste cómo usar el método withMonth()
para crear una copia de una instancia de LocalDate
con el mes del año establecido en un nuevo valor. También aprendiste cómo manejar valores de mes no válidos y cómo usar el método getMonthValue()
para obtener el valor del mes del año de una instancia de LocalDate
. El método withMonth()
es una herramienta útil para manipular fechas y se puede usar de muchas maneras diferentes, incluyendo la generación de una lista de fechas para cada mes del año.