La clase java.util.Calendar es una clase abstracta que proporciona métodos para operar con campos de calendario como el año, mes, día, hora, etc. Debido a que es abstracta, no se puede instanciar directamente. En su lugar, se utiliza el método estáticco getInstance() para obtener una instancia de una subclase de Calendar, preconfigurada con la zona horaria y la configuración regional predeterminadas.
Ejemplo de obtención de una instancia de Calendar:
import java.util.Calendar;
public class CalendarBasico {
public static void main(String[] args) {
Calendar calendario = Calendar.getInstance();
System.out.println("Instancia de Calendar: " + calendario);
}
}
Métodos comunes de la clase Calendar:
public int get(int field): Devuelve el valor de un campo de calendario específico. Ejemplo para obtener año, mes y día:
java import java.util.Calendar; public class ObtenerCamposCalendar { public static void main(String[] args) { Calendar calendario = Calendar.getInstance(); int anio = calendario.get(Calendar.YEAR); System.out.println("Año: " + anio); // Nota: Calendar.MONTH está basado en 0, por lo que se suma 1. int mes = calendario.get(Calendar.MONTH) + 1; System.out.println("Mes: " + mes); int diaDelMes = calendario.get(Calendar.DATE); System.out.println("Día del mes: " + diaDelMes); } } 2. public void set(int field, int value): Establece el valor de un campo de calendario específico. Ejemplo de configuración de fecha:
java import java.util.Calendar; public class ConfigurarCamposCalendar { public static void main(String[] args) { Calendar calendario = Calendar.getInstance(); // Configuración individual de campos calendario.set(Calendar.YEAR, 2022); calendario.set(Calendar.MONTH, 9); // Mes de Octubre (0-indexado) calendario.set(Calendar.DATE, 15); System.out.println("Año configurado: " + calendario.get(Calendar.YEAR)); System.out.println("Mes configurado: " + calendario.get(Calendar.MONTH)); // Mostrará 9 System.out.println("Día configurado: " + calendario.get(Calendar.DATE)); } } También existe una sobrecarga para establecer la fecha completa:
java import java.util.Calendar; public class ConfigurarFechaCompleta { public static void main(String[] args) { Calendar calendario = Calendar.getInstance(); // Configuración de fecha completa (año, mes - 0 indexado, día) calendario.set(2023, 10, 20); // 20 de Diciembre de 2023 System.out.println("Año: " + calendario.get(Calendar.YEAR)); System.out.println("Mes: " + calendario.get(Calendar.MONTH)); // Mostrará 11 System.out.println("Día: " + calendario.get(Calendar.DATE)); } } 3. public abstract void add(int field, int amount): Añade o resta una cantidad de tiempo a un campo de calendario específico. Un valor positivo en amount suma tiempo, meintras que uno negativo resta. Ejemplo para sumar y restar años:
java import java.util.Calendar; public class ModificarCamposCalendar { public static void main(String[] args) { Calendar calendario = Calendar.getInstance(); // Restar 2 años calendario.add(Calendar.YEAR, -2); int anioAnterior = calendario.get(Calendar.YEAR); System.out.println("Año tras restar 2 años: " + anioAnterior); // Volver al año actual y sumar 3 meses calendario = Calendar.getInstance(); // Reiniciar instancia calendario.add(Calendar.MONTH, 3); int mesFuturo = calendario.get(Calendar.MONTH) + 1; // Ajustar para mes 1-indexado System.out.println("Mes tras sumar 3 meses: " + mesFuturo); } } 4. public Date getTime(): Devuelve un objeto java.util.Date que representa el momento actual en el calandario. Ejemplo de conversión a Date:
java import java.util.Calendar; import java.util.Date; public class ConvertirACalendar { public static void main(String[] args) { Calendar calendario = Calendar.getInstance(); Date fechaActual = calendario.getTime(); System.out.println("Fecha actual como objeto Date: " + fechaActual); } }
Clase java.lang.SystemLa clase System proporciona métodos estáticos para interactuar con el entorno del sistema. Dos métodos útiles son:
public static long currentTimeMillis(): Devuelve el tiempo actual en milisegundos desde la época (1 de enero de 1970, 00:00:00 UTC). Es útil para medir la duración de operaciones. Ejemplo de medición de tiempo:
java public class MedirTiempoEjecucion { public static void main(String[] args) { long tiempoInicio = System.currentTimeMillis(); // Simular una operación que toma tiempo for (int i = 0; i < 50000; i++) { System.out.print("."); // Imprimir para que la operación no sea optimizada por el compilador } System.out.println(); // Nueva línea después del bucle long tiempoFin = System.currentTimeMillis(); long duracion = tiempoFin - tiempoInicio; System.out.println("Operación completada en " + duracion + " milisegundos."); } } 2. public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length): Copia un rango de elementos de un array de origen a un array de destino. - src: El array de origen. - srcPos: La posición inicial en el array de origen. - dest: El array de destino. - destPos: La posición inicial en el array de destino. - length: El número de elementos a copiar. Ejemplo de copia de arrays:
java import java.util.Arrays; public class CopiarArrays { public static void main(String[] args) { int[] origen = {10, 20, 30, 40, 50}; int[] destino = {60, 70, 80, 90, 100}; System.out.println("Array origen antes de copiar: " + Arrays.toString(origen)); System.out.println("Array destino antes de copiar: " + Arrays.toString(destino)); System.out.println("-----------------------------"); // Copiar los primeros 3 elementos de 'origen' a 'destino' comenzando en la posición 0 System.arraycopy(origen, 0, destino, 0, 3); System.out.println("Array origen después de copiar: " + Arrays.toString(origen)); System.out.println("Array destino después de copiar: " + Arrays.toString(destino)); } } Resultado de la copia:
Array origen antes de copiar: [10, 20, 30, 40, 50]
Array destino antes de copiar: [60, 70, 80, 90, 100]
-----------------------------
Array origen después de copiar: [10, 20, 30, 40, 50]
Array destino después de copiar: [10, 20, 30, 90, 100]