Cómo convertir entre formatos de fecha en Java

JavaJavaBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Java ofrece un conjunto sólido de herramientas para trabajar con fechas y horas, pero la conversión entre diferentes formatos de fecha puede ser un desafío común. Este tutorial lo guiará a través del proceso de comprensión de los formatos de fecha de Java y demostrará ejemplos prácticos de conversión entre ellos, lo que le permitirá manejar de manera efectiva las tareas relacionadas con fechas en sus proyectos de Java.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java/ObjectOrientedandAdvancedConceptsGroup -.-> java/date("Date") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/format("Format") java/SystemandDataProcessingGroup -.-> java/string_methods("String Methods") java/SystemandDataProcessingGroup -.-> java/system_methods("System Methods") subgraph Lab Skills java/date -.-> lab-413975{{"Cómo convertir entre formatos de fecha en Java"}} java/format -.-> lab-413975{{"Cómo convertir entre formatos de fecha en Java"}} java/string_methods -.-> lab-413975{{"Cómo convertir entre formatos de fecha en Java"}} java/system_methods -.-> lab-413975{{"Cómo convertir entre formatos de fecha en Java"}} end

Comprensión de los formatos de fecha de Java

En Java, las fechas y horas se representan utilizando varios formatos de fecha y hora. Estos formatos definen cómo se estructura y muestra la información de fecha y hora. Comprender estos formatos de fecha es crucial cuando se trabaja con fechas y horas en aplicaciones Java.

Clases de fecha y hora de Java

Java proporciona varias clases para trabajar con fechas y horas, como java.util.Date, java.time.LocalDate, java.time.LocalTime y java.time.LocalDateTime. Cada una de estas clases tiene su propia forma de representar y dar formato a la información de fecha y hora.

Formatos de fecha en Java

Java utiliza la clase java.text.SimpleDateFormat para definir y analizar formatos de fecha y hora. Esta clase le permite especificar un patrón que describe la estructura de la información de fecha y hora. Algunos patrones comunes de fecha y hora son los siguientes:

Patrón Descripción
"yyyy-MM-dd" Representa una fecha en el formato "YYYY-MM-DD" (por ejemplo, "2023-04-24")
"HH:mm:ss" Representa una hora en el formato "HH:MM:SS" (por ejemplo, "15:30:00")
"yyyy-MM-dd HH:mm:ss" Representa una fecha y hora en el formato "YYYY-MM-DD HH:MM:SS" (por ejemplo, "2023-04-24 15:30:00")

Comprender estos patrones de fecha y hora es crucial cuando se trabaja con fechas y horas en aplicaciones Java.

graph TD A[java.util.Date] --> B[java.time.LocalDate] A --> C[java.time.LocalTime] A --> D[java.time.LocalDateTime] B --> E[java.text.SimpleDateFormat] C --> E D --> E

Conversión de formatos de fecha en Java

Cuando se trabaja con fechas y horas en Java, a menudo es necesario convertir entre diferentes formatos de fecha. Java ofrece varias formas de lograr esto, incluyendo el uso de la clase java.text.SimpleDateFormat y el paquete java.time.

Uso de SimpleDateFormat

La clase java.text.SimpleDateFormat permite analizar y dar formato a cadenas de fecha y hora utilizando un patrón especificado. Aquí hay un ejemplo de cómo convertir una cadena de fecha de un formato a otro:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormatConverter {
    public static void main(String[] args) {
        String dateString = "2023-04-24 15:30:00";
        String inputFormat = "yyyy-MM-dd HH:mm:ss";
        String outputFormat = "MM/dd/yyyy hh:mm a";

        try {
            SimpleDateFormat inputFormatter = new SimpleDateFormat(inputFormat);
            SimpleDateFormat outputFormatter = new SimpleDateFormat(outputFormat);

            Date date = inputFormatter.parse(dateString);
            String formattedDate = outputFormatter.format(date);

            System.out.println("Input date: " + dateString);
            System.out.println("Formatted date: " + formattedDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

Uso del paquete java.time

El paquete java.time introducido en Java 8 proporciona una forma más sólida y flexible de trabajar con fechas y horas. Aquí hay un ejemplo de cómo convertir un objeto LocalDateTime a un formato diferente:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class DateFormatConverter {
    public static void main(String[] args) {
        LocalDateTime dateTime = LocalDateTime.of(2023, 4, 24, 15, 30, 0);
        String inputFormat = "yyyy-MM-dd HH:mm:ss";
        String outputFormat = "MM/dd/yyyy hh:mm a";

        DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern(inputFormat);
        DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern(outputFormat);

        String formattedDate = dateTime.format(outputFormatter);

        System.out.println("Input date: " + dateTime.format(inputFormatter));
        System.out.println("Formatted date: " + formattedDate);
    }
}

Ambos ejemplos demuestran cómo convertir formatos de fecha y hora en Java, ya sea utilizando la clase SimpleDateFormat o el paquete java.time.

Ejemplos de conversión de formatos de fecha

En esta sección, exploraremos más ejemplos de conversión de formatos de fecha en Java.

Conversión entre Date y String

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormatConverter {
    public static void main(String[] args) {
        // Convert Date to String
        Date currentDate = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        String dateString = dateFormat.format(currentDate);
        System.out.println("Date to String: " + dateString);

        // Convert String to Date
        String inputDateString = "2023-04-24";
        SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd");
        try {
            Date inputDate = inputFormat.parse(inputDateString);
            System.out.println("String to Date: " + inputDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

Conversión entre LocalDateTime y String

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class DateFormatConverter {
    public static void main(String[] args) {
        // Convert LocalDateTime to String
        LocalDateTime currentDateTime = LocalDateTime.now();
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String dateTimeString = currentDateTime.format(dateTimeFormatter);
        System.out.println("LocalDateTime to String: " + dateTimeString);

        // Convert String to LocalDateTime
        String inputDateTimeString = "2023-04-24 15:30:00";
        LocalDateTime inputDateTime = LocalDateTime.parse(inputDateTimeString, dateTimeFormatter);
        System.out.println("String to LocalDateTime: " + inputDateTime);
    }
}

Conversión entre tipos temporales

import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;

public class DateFormatConverter {
    public static void main(String[] args) {
        // Convert Date to LocalDateTime
        Date currentDate = new Date();
        LocalDateTime localDateTime = currentDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
        System.out.println("Date to LocalDateTime: " + localDateTime);

        // Convert LocalDateTime to Date
        LocalDateTime inputLocalDateTime = LocalDateTime.of(2023, 4, 24, 15, 30, 0);
        Date inputDate = Date.from(inputLocalDateTime.atZone(ZoneId.systemDefault()).toInstant());
        System.out.println("LocalDateTime to Date: " + inputDate);

        // Convert LocalDate to Date
        LocalDate localDate = LocalDate.of(2023, 4, 24);
        Date dateFromLocalDate = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
        System.out.println("LocalDate to Date: " + dateFromLocalDate);
    }
}

Estos ejemplos cubren varios escenarios de conversión de formatos de fecha y hora en Java, utilizando tanto las clases java.text.SimpleDateFormat como java.time.

Resumen

En este completo tutorial de Java, has aprendido cómo convertir entre varios formatos de fecha, desde comprender los conceptos subyacentes de los formatos de fecha hasta aplicar ejemplos prácticos. Al dominar estas técnicas, ahora puedes manejar con confianza las operaciones relacionadas con fechas en tus aplicaciones Java, asegurando un procesamiento de datos sin problemas y una mejor experiencia para el usuario.