Maison  >  Article  >  Java  >  Analyser et formater les dates et les heures à l'aide de la nouvelle classe DateTimeFormatter et de l'interface TemporalAccessor dans Java 11

Analyser et formater les dates et les heures à l'aide de la nouvelle classe DateTimeFormatter et de l'interface TemporalAccessor dans Java 11

PHPz
PHPzoriginal
2023-07-30 12:41:13954parcourir

Utilisez la nouvelle classe DateTimeFormatter et l'interface TemporalAccessor dans Java 11 pour analyser et formater les dates et les heures

Comme l'heure et la date sont largement utilisées dans les applications modernes, la gestion des dates et des heures avec précision et commodité devient de plus en plus importante. Pour répondre à ce besoin, Java 11 introduit la nouvelle classe DateTimeFormatter et l'interface TemporalAccessor, rendant l'analyse et le formatage des dates et des heures plus flexibles et plus faciles.

La classe DateTimeFormatter est un outil puissant pour formater et analyser les dates et les heures. Il fournit un ensemble de formats prédéfinis et permet également aux développeurs de personnaliser les formats. Dans le même temps, DateTimeFormatter prend également en charge la localisation et le traitement des fuseaux horaires pour répondre aux formats de date et d'heure dans différentes régions et besoins. Voici quelques exemples de DateTimeFormatters courants :

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

public class DateTimeFormatterExample {
    public static void main(String[] args) {
        LocalDateTime dateTime = LocalDateTime.now();

        // 格式化为字符串
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formattedDateTime = dateTime.format(formatter);
        System.out.println("Formatted Date and Time: " + formattedDateTime);

        // 解析字符串为日期和时间
        String dateTimeString = "2022-01-01 12:00:00";
        LocalDateTime parsedDateTime = LocalDateTime.parse(dateTimeString, formatter);
        System.out.println("Parsed Date and Time: " + parsedDateTime);
    }
}

Dans l'exemple ci-dessus, nous créons d'abord un objet DateTimeFormatter pour spécifier le format de la date et de l'heure. Pendant le processus de formatage, nous utilisons le mode de formatage aaaa-MM-jj HH:mm:ss pour formater la date et l'heure actuelles dans une chaîne. Nous utilisons ensuite la méthode format() de LocalDateTime pour formater l'objet date et heure en une chaîne et l'imprimer. yyyy-MM-dd HH:mm:ss的格式模式,将当前的日期和时间格式化为字符串。然后,我们使用LocalDateTimeformat()方法,将日期和时间对象格式化为字符串,并将其打印出来。

另外,我们还可以通过DateTimeFormatterparse()方法,将字符串解析为日期和时间对象。在这个示例中,我们使用相同的格式模式,将一个日期和时间字符串解析为LocalDateTime对象,并将其打印出来。

除了使用预定义的格式模式外,我们还可以使用DateTimeFormatter的其他方法来实现更加细粒度的日期和时间格式化。例如,我们可以使用DateTimeFormatterBuilder类来构建自定义的格式:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;

public class CustomDateTimeFormatterExample {
    public static void main(String[] args) {
        LocalDate date = LocalDate.now();

        DateTimeFormatter formatter = new DateTimeFormatterBuilder()
                .appendLiteral("Today is ")
                .appendValue(DateTimeFormatter.ISO_LOCAL_DATE)
                .appendLiteral(".")
                .toFormatter();
        String formattedDate = date.format(formatter);
        System.out.println(formattedDate);
    }
}

在上面的示例中,我们使用DateTimeFormatterBuilder类来创建一个自定义的日期格式化器。在这个格式化器中,我们首先使用appendLiteral()方法添加了一个字面量字符串"Today is ",然后使用appendValue()方法添加了日期,最后再添加了一个字面量字符串"。"。通过使用这些方法,我们可以构建出符合自己需求的日期格式。

除了DateTimeFormatter类外,Java 11还引入了TemporalAccessor接口,该接口可以用作日期和时间对象的通用访问器。它提供了一组通用的方法,可以通过具体的实现类如LocalDateTime、LocalDate等来访问日期和时间对象的各个部分。以下是TemporalAccessor的一些示例用法:

import java.time.LocalDateTime;
import java.time.temporal.ChronoField;

public class TemporalAccessorExample {
    public static void main(String[] args) {
        LocalDateTime dateTime = LocalDateTime.now();

        int year = dateTime.get(ChronoField.YEAR);
        int month = dateTime.get(ChronoField.MONTH_OF_YEAR);
        int day = dateTime.get(ChronoField.DAY_OF_MONTH);
        int hour = dateTime.get(ChronoField.HOUR_OF_DAY);
        int minute = dateTime.get(ChronoField.MINUTE_OF_HOUR);
        int second = dateTime.get(ChronoField.SECOND_OF_MINUTE);

        System.out.println("Current Date: " + year + "-" + month + "-" + day);
        System.out.println("Current Time: " + hour + ":" + minute + ":" + second);
    }
}

在上面的示例中,我们使用LocalDateTime类创建了一个当前的日期和时间对象。然后,我们使用get()方法和ChronoField

De plus, nous pouvons également analyser des chaînes en objets date et heure via la méthode parse() de DateTimeFormatter. Dans cet exemple, nous utilisons le même modèle de formatage pour analyser une chaîne de date et d'heure dans un objet LocalDateTime et l'imprimer.

En plus d'utiliser des modes de format prédéfinis, nous pouvons également utiliser d'autres méthodes de DateTimeFormatter pour obtenir un formatage plus fin de la date et de l'heure. Par exemple, nous pouvons utiliser la classe DateTimeFormatterBuilder pour créer un format personnalisé : 🎜rrreee🎜 Dans l'exemple ci-dessus, nous utilisons la classe DateTimeFormatterBuilder pour créer un périphérique de formatage de date personnalisé. Dans ce formateur, nous avons d'abord ajouté une chaîne littérale « Aujourd'hui, c'est » à l'aide de la méthode appendLiteral(), puis avons ajouté la date à l'aide de la méthode appendValue(). Enfin, un. la chaîne littérale "." est ajoutée. En utilisant ces méthodes, nous pouvons construire un format de date qui répond à nos besoins. 🎜🎜En plus de la classe DateTimeFormatter, Java 11 introduit également l'interface TemporalAccessor, qui peut être utilisée comme accesseur universel pour les objets date et heure. Il fournit un ensemble de méthodes courantes qui peuvent accéder à diverses parties des objets date et heure via des classes d'implémentation spécifiques telles que LocalDateTime, LocalDate, etc. Voici quelques exemples d'utilisation de TemporalAccessor : 🎜rrreee🎜 Dans l'exemple ci-dessus, nous avons créé un objet date et heure actuelles à l'aide de la classe LocalDateTime. Nous utilisons ensuite la méthode get() et l'énumération ChronoField pour obtenir les différentes parties de la date et de l'heure, telles que l'année, le mois, le jour, l'heure, les minutes et deuxième. Enfin, nous assemblons les pièces et les imprimons. 🎜🎜En utilisant la nouvelle classe DateTimeFormatter et l'interface TemporalAccessor dans Java 11, nous pouvons gérer les dates et les heures avec précision et commodité. Qu'il s'agisse de formater des objets date et heure en chaînes ou d'analyser des chaînes en objets date et heure, ces nouvelles classes utilitaires fournissent des méthodes flexibles et faciles à utiliser pour rendre le traitement de la date et de l'heure plus efficace et plus fiable. Les développeurs peuvent choisir l'outil approprié en fonction de leurs besoins pour gérer diverses opérations de date et d'heure. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn