Comment convertir entre les formats de date en Java

JavaJavaBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Java offre un ensemble robuste d'outils pour travailler avec les dates et les heures, mais la conversion entre différents formats de date peut être un défi courant. Ce tutoriel vous guidera tout au long du processus de compréhension des formats de date Java et présentera des exemples pratiques de conversion entre eux, vous permettant de gérer efficacement les tâches liées aux dates dans vos projets Java.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) 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{{"Comment convertir entre les formats de date en Java"}} java/format -.-> lab-413975{{"Comment convertir entre les formats de date en Java"}} java/string_methods -.-> lab-413975{{"Comment convertir entre les formats de date en Java"}} java/system_methods -.-> lab-413975{{"Comment convertir entre les formats de date en Java"}} end

Comprendre les formats de date Java

En Java, les dates et les heures sont représentées à l'aide de divers formats de date et d'heure. Ces formats définissent la structure et l'affichage des informations de date et d'heure. Comprendre ces formats de date est essentiel lorsque vous travaillez avec des dates et des heures dans des applications Java.

Classes de date et d'heure Java

Java fournit plusieurs classes pour travailler avec les dates et les heures, telles que java.util.Date, java.time.LocalDate, java.time.LocalTime et java.time.LocalDateTime. Chacune de ces classes a sa propre manière de représenter et de formater les informations de date et d'heure.

Formats de date en Java

Java utilise la classe java.text.SimpleDateFormat pour définir et analyser les formats de date et d'heure. Cette classe vous permet de spécifier un modèle qui décrit la structure des informations de date et d'heure. Certains modèles de date et d'heure courants incluent :

Modèle Description
"yyyy-MM-dd" Représente une date au format "AAAA-MM-JJ" (par exemple, "2023-04-24")
"HH:mm:ss" Représente une heure au format "HH:MM:SS" (par exemple, "15:30:00")
"yyyy-MM-dd HH:mm:ss" Représente une date et une heure au format "AAAA-MM-JJ HH:MM:SS" (par exemple, "2023-04-24 15:30:00")

Comprendre ces modèles de date et d'heure est essentiel lorsque vous travaillez avec des dates et des heures dans des applications 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

Conversion de formats de date en Java

Lorsque vous travaillez avec des dates et des heures en Java, vous avez souvent besoin de convertir entre différents formats de date. Java propose plusieurs méthodes pour y parvenir, notamment en utilisant la classe java.text.SimpleDateFormat et le package java.time.

Utilisation de SimpleDateFormat

La classe java.text.SimpleDateFormat vous permet d'analyser et de formater des chaînes de caractères de date et d'heure en utilisant un modèle spécifié. Voici un exemple de conversion d'une chaîne de date d'un format à un autre :

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();
        }
    }
}

Utilisation du package java.time

Le package java.time introduit dans Java 8 offre une manière plus robuste et flexible de travailler avec des dates et des heures. Voici un exemple de conversion d'un objet LocalDateTime en un autre format :

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);
    }
}

Les deux exemples montrent comment convertir des formats de date et d'heure en Java, en utilisant soit la classe SimpleDateFormat, soit le package java.time.

Exemples de conversion de formats de date

Dans cette section, nous allons explorer davantage d'exemples de conversion de formats de date en Java.

Conversion entre Date et 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();
        }
    }
}

Conversion entre LocalDateTime et 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);
    }
}

Conversion entre types temporels

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);
    }
}

Ces exemples couvrent diverses situations de conversion de formats de date et d'heure en Java, en utilisant à la fois les classes java.text.SimpleDateFormat et java.time.

Résumé

Dans ce tutoriel Java complet, vous avez appris à convertir entre différents formats de date, depuis la compréhension des concepts sous-jacents des formats de date jusqu'à l'application d'exemples pratiques. En maîtrisant ces techniques, vous pouvez désormais gérer avec confiance les opérations liées aux dates dans vos applications Java, garantissant un traitement de données fluide et une amélioration de l'expérience utilisateur.