Si vous souhaitez rendre votre code concis, essayez cette utilisation avancée de la classe SimpleDateFormat

Cet article est partagé par la communauté Huawei Cloud « Du débutant à la maîtrise : utilisation avancée de la classe SimpleDateFormat pour simplifier votre code ! » ", auteur : bactéries bug.

Description de l'environnement : Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8

@[toc]

Préface

La date et l'heure sont des exigences très courantes en matière de développement, en particulier lorsqu'il s'agit de logique métier liée au temps, nous devons formater, comparer et effectuer d'autres opérations sur la date et l'heure. En Java, nous pouvons utiliser SimpleDateFormatdes classes pour effectuer facilement des opérations de formatage et d’analyse de la date et de l’heure.

Cet article présentera SimpleDateFormatl'utilisation avancée de la classe, dans le but de permettre aux lecteurs de mieux comprendre l'utilisation de cette classe et de rendre le code plus concis.

Résumé

Dans cet article, nous présenterons les aspects suivants :

  1. SimpleDateFormatPrésentation et utilisations courantes des classes
  2. SimpleDateFormatUtilisation avancée de la classe
  3. Implémentation du code et cas de tests
  4. Sommaire et conclusion

Classe SimpleDateFormat

Aperçu

SimpleDateFormatLa classe est une classe en Java utilisée pour le formatage et l'analyse des dates et heures. Il fournit une série de méthodes de construction et de chaînes de format, nous permettant de formater et d'analyser facilement la date et l'heure.

Avantages et inconvénients

SimpleDateFormatIl s'agit d'une classe utilisée pour formater les dates et les heures en Java. Elle hérite de la classe DateFormat et est une classe non sécurisée pour les threads.

avantage:

  1. Simple et facile à utiliser, vous pouvez rapidement formater les dates dans des formats spécifiés et convertir les chaînes en objets date correspondants.
  2. Le format de date peut être personnalisé et plusieurs formats prédéfinis sont pris en charge.
  3. Peut être utilisé pour les opérations d’analyse et de formatage de date.

défaut:

  1. SimpleDateFormatIl n’est pas thread-safe et ne convient pas à une utilisation dans des environnements multithread.
  2. Pour certains formats de date, comme l'année, le mois, le jour, l'heure, les minutes, les secondes et les millisecondes, il est nécessaire d'utiliser des caractères spécifiques pour les représenter, et ces caractères présentent un certain degré de difficulté et de complexité.

Scénarios d'application

SimpleDateFormatConvient aux scénarios de formatage et d'analyse de date, tels que la journalisation, les opérations de base de données, le commerce électronique et d'autres domaines. Par exemple, vous pouvez convertir un horodatage en chaîne de date dans un format spécifié ou analyser une chaîne de date en un objet date correspondant. Mais sachez que comme il SimpleDateFormatn'est pas sécurisé pour les threads, vous devez le synchroniser lorsque vous l'utilisez dans un environnement multithread, ou utiliser une alternative thread-safe telle que celle Joda-Timede la bibliothèque DateTimeFormatter.

Analyse du code source

SimpleDateFormatIl s'agit d'une classe de formatage d'heure classique en Java. Elle peut convertir l'heure en chaîne dans un format spécifié, et elle peut également convertir une chaîne en heure dans un format spécifié.

Parmi eux SimpleDateFormat, le code source de la classe est plus compliqué car il implique beaucoup de règles de formatage temporel. Nous analysons ici seulement brièvement son principe de mise en œuvre.

1.Constructeur

SimpleDateFormatLes classes ont plusieurs constructeurs, parmi lesquels les deux suivants sont plus couramment utilisés :

public SimpleDateFormat (modèle de chaîne) 
public SimpleDateFormat (modèle de chaîne, paramètres régionaux)

Le paramètre du premier constructeur est le modèle de formatage de l'heure, c'est-à-dire le format de la chaîne d'heure. Le deuxième constructeur peut spécifier des informations de localisation géographique.

2. Formater l'heure

SimpleDateFormatLa méthode principale de la classe pour formater l'heure en chaîne est format(). Cette méthode reçoit un paramètre de type Date et renvoie une chaîne d'heure formatée.

3. Temps d'analyse

SimpleDateFormatLa méthode principale de la classe pour analyser une chaîne en une heure est parse()que cette méthode reçoit une chaîne d'heure en tant que paramètre et renvoie un objet date de type Date.

4. Sécurité du fil

SimpleDateFormatLa classe n'est pas thread-safe car son état interne peut être modifié par plusieurs threads simultanément. Si vous souhaitez l'utiliser dans un environnement multithread, vous pouvez l'utiliser ThreadLocalpour obtenir une isolation des threads.

En général, SimpleDateFormatla classe est une classe de formatage de l'heure très couramment utilisée en Java, qui peut facilement convertir l'heure en chaîne dans un format spécifié, et peut également analyser une chaîne en heure. Lorsque vous l'utilisez, vous devez faire attention à la sécurité des fils.

Usage courant

Voici SimpleDateFormatquelques utilisations courantes des classes :

1. Formater la date et l'heure

Les méthodes de la classe SimpleDateFormat format()peuvent formater la date et l'heure selon le format spécifié. Par exemple:

paquet com.demo.javase.day53 ; 

importer java.text.SimpleDateFormat ; 
importer java.util.Date ; 

/** 
 * @author bug菌
 * @date 2023/10/17 19:17 
 */ 
public class SimpleDateFormatTest { 

    //格式化日期时间
    public static void testFormat(){ 
        SimpleDateFormat sdf = new SimpleDateFormat("aaaa-MM-jj HH:mm:ss"); 
        Chaîne dateStr = sdf.format(new Date()); 
        System.out.println(dateStr); 
    } 

    public static void main(String[] args) { 
        testFormat(); 
    } 
}

Le code ci-dessus formate l'heure actuelle au format "aaaa-MM-jj HH: mm: ss" et l'affiche.

Le résultat est le suivant :

2023-10-17 19:21:45

La capture d'écran du résultat de l'exécution est la suivante :

2. Analyser la date et l'heure

SimpleDateFormatLes méthodes de la classe parse()peuvent analyser des chaînes dans un format spécifique en objets Date. Par exemple:

//Le 
    testParse() public static void testParse() lance ParseException { 
        SimpleDateFormat sdf = new SimpleDateFormat("aaaa-MM-jj"); 
        Date date = sdf.parse("2023-10-17"); 
        System.out.println(date); 
    } 

    public static void main(String[] args) throws ParseException { 
        testParse(); 
    }

Le code ci-dessus analyse la chaîne « 2021-08-01 » dans un objet Date et la génère. Le résultat est le suivant :

mar. 17 octobre 00:00:00 CST 2023

La capture d'écran du résultat de l'exécution est la suivante :

3. Définir le fuseau horaire

Les méthodes de la classe SimpleDateFormat setTimeZone()peuvent définir le fuseau horaire. Par exemple:

//设置区时
    public static void testSetTimeZone(){ 
        SimpleDateFormat sdf = new SimpleDateFormat("aaaa-MM-jj HH:mm:ss"); 
        sdf.setTimeZone(TimeZone.getTimeZone("GMT+8")); 
        Chaîne dateStr = sdf.format(new Date()); 
        System.out.println(dateStr); 
    } 

    public static void main(String[] args) throws ParseException { 
        testSetTimeZone(); 
    }

Le code ci-dessus définit le fuseau horaire GMT+8et formate l'heure actuelle au format « aaaa-MM-jj HH:mm:ss » pour la sortie. Le résultat est le suivant :

2023-10-17 19:25:43

La capture d'écran du résultat de l'exécution est la suivante :

Utilisation avancée

En plus des utilisations courantes ci-dessus, SimpleDateFormatla classe possède également des utilisations avancées qui nous permettent de formater et d'analyser la date et l'heure de manière plus flexible.

1. Caractères d'échappement

SimpleDateFormatLa classe prend en charge l'utilisation de caractères d'échappement pour générer des caractères spéciaux. Par exemple:

//转义字符
    public static void testSimpleDateFormat(){ 
        SimpleDateFormat sdf = new SimpleDateFormat("aaaa-MM-jj 'at' HH:mm:ss"); 
        Chaîne dateStr = sdf.format(new Date()); 
        System.out.println(dateStr); 
    } 

    public static void main(String[] args) throws ParseException { 
        testSimpleDateFormat(); 
    }

Le code ci-dessus utilise des guillemets simples pour entourer "at" afin d'indiquer le caractère de sortie "at". Le résultat est le suivant :

2023-10-17 à 19:27:24

La capture d'écran du résultat de l'exécution est la suivante :

2. Formatage des nombres

SimpleDateFormatLa classe prend en charge l'utilisation de "#" et "0" pour le formatage des nombres. Parmi eux, "#" indique des chiffres facultatifs et "0" indique que les chiffres manquants sont remplis de 0. Par exemple:

//数字格式化
    public static void testSimpleDateFormat_1(){ 
        SimpleDateFormat sdf = new SimpleDateFormat("aaaa-MM-jj HH:mm:ss.SSS"); 
        Chaîne dateStr = sdf.format(new Date()); 
        System.out.println(dateStr); 
    } 

    public static void main(String[] args) throws ParseException { 
        testSimpleDateFormat_1(); 
    }

Le code ci-dessus formate l'heure actuelle au format "aaaa-MM-jj HH: mm: ss.SSS" et l'affiche. Le résultat est le suivant :

2023-10-17 19:28:31.478

La capture d'écran du résultat de l'exécution est la suivante :

3. Mode Formatage

SimpleDateFormatLa classe prend en charge l’utilisation de modèles de formatage pour afficher la date et l’heure. Le modèle de formatage comprend la date et l’heure, qui peuvent être combinées librement. Les modes de formatage de date incluent « y », « M », « d », « E », etc., qui représentent respectivement l'année, le mois, le jour, le jour de la semaine, etc. Les modes de formatage de l'heure incluent « H », « m », « s », « S », etc., qui représentent respectivement les heures, les minutes, les secondes, les millisecondes, etc. Par exemple:

//格式化模式
    public static void testSimpleDateFormat_2() { 
        SimpleDateFormat sdf = new SimpleDateFormat("aaaa-MM-jj E HH:mm:ss"); 
        Chaîne dateStr = sdf.format(new Date()); 
        System.out.println(dateStr); 
    } 

    public static void main(String[] args) throws ParseException { 
        testSimpleDateFormat_2(); 
    }

Le code ci-dessus formate l'heure actuelle au format « aaaa-MM-jj E HH:mm:ss » et l'affiche. Le résultat est le suivant :

2023-10-17 mardi 19:29:42

La capture d'écran du résultat de l'exécution est la suivante :

cas de test

exemple de code

Voici SimpleDateFormatun exemple de code et des cas de test pour l'utilisation de la classe :

package com.demo.javase.day53 ; 

importer java.text.SimpleDateFormat ; 
importer java.util.Date ; 
importer java.util.TimeZone ; 

/** 
 * @author bugbug 
 * @date 2023/10/17 19:17 
 * / 
public class SimpleDateFormatDemo { 

    public static void main(String[] args) throws Exception { 
        // Formater la date et l'heure 
        SimpleDateFormat sdf1 = new SimpleDateFormat("aaaa-MM-jj HH:mm:ss"); 
        String dateStr1 = sdf1.format ( new Date()); 
        System.out.println(dateStr1); 

        // Analyser la date et l'heure 
        SimpleDateFormat sdf2 = new SimpleDateFormat("aaaa-MM-jj"); 
        Date date2 = sdf2.parse("2023-10-17" ); 
        System.out.println(date2); 

        // Définir le fuseau horaire 
        SimpleDateFormat sdf3 = new SimpleDateFormat("aaaa-MM-jj HH:mm:ss"); 
        sdf3.setTimeZone(TimeZone.getTimeZone("GMT+8") ) ; 
        String dateStr3 = sdf3.format(new Date()); 
        System.out.println(dateStr3); 

        // Caractères d'échappement 
        SimpleDateFormat sdf4 = new SimpleDateFormat("aaaa-MM-jj 'at' HH:mm:ss") ; 
        String dateStr4 = sdf4.format(new Date()); 
        System.out.println(dateStr4); 

        // Formatage des nombres 
        SimpleDateFormat sdf5 = new SimpleDateFormat("aaaa/MM/jj HH:mm:ss.SSS"); 
        String dateStr5 = sdf5.format(new Date()); 
        System.out.println(dateStr5); 

        // Mode de formatage 
        SimpleDateFormat sdf6 = new SimpleDateFormat("aaaa-MM-jj E HH:mm:ss"); 
        String dateStr6 = sdf6 .format(new Date()); 
        System.out.println(dateStr6); 
    } 
}

Analyse des codes

Pour le code du scénario de test ci-dessus, je vais vous montrer comment utiliser SimpleDateFormatdes classes en Java pour formater et analyser les dates. Les détails sont les suivants :

Formater la date et l'heure

SimpleDateFormatLa méthode utilisée format()consiste à formater l'heure actuelle et à afficher l'heure dans le format spécifié.

Analyser la date et l'heure

Utilisez la parse()méthode SimpleDateFormat pour convertir une chaîne en date de type Date.

Définir le fuseau horaire

Utilisez la méthode SimpleDateFormat setTimeZone()pour définir le fuseau horaire et modifier le fuseau horaire par défaut en GMT+8.

caractère d'échappement

Utilisez des guillemets simples et des guillemets doubles pour délimiter les caractères, indiquant que cette partie du contenu n'a pas besoin d'être formatée.

Formatage des nombres

Ajoutez des millisecondes à la date formatée.

Mode formatage

Utilisez SimpleDateFormatle mode de formatage défini pour afficher la date, le jour de la semaine et l'heure au format spécifié.

Dans l’ensemble, SimpleDateFormatil est idéal pour gérer les conversions de formats de date standards et les calculs de date simples. Mais il convient de noter qu'il n'est pas thread-safe : s'il est utilisé dans un environnement multithread, il doit être synchronisé ou utilisé pour ThreadLocalimplémenter des variables locales du thread.

exécution des tests

Le résultat est le suivant :

2023-10-17 19:31:16
Mar 17 octobre 00:00:00 CST 2023
2023-10-17 19:31:16
2023-10-17 à 19:31:16
2023/10/17 19:31 : 16.783
2023-10-17 mardi 19:31:16\

La capture d'écran du résultat de l'exécution est la suivante :

résumé

Cet article présente aux lecteurs SimpleDateFormatla présentation et l'utilisation courante des classes, ainsi que certaines utilisations avancées. En étudiant cet article, les lecteurs pourront mieux maîtriser SimpleDateFormatl'utilisation des classes et rendre le code plus concis.

Code source de l'annexe

Tous les codes sources mentionnés ci-dessus ont été téléchargés et synchronisés dans "Gitee" , offrant aux étudiants un apprentissage de référence individuel pour vous aider à le maîtriser plus rapidement.

Résumer

En général, cet article présente SimpleDateFormatune présentation, une utilisation courante et une utilisation avancée des classes de formatage et d'analyse de date couramment utilisées en Java, ainsi que des cas de test et des implémentations de code utilisant cette classe. Parmi eux, l'utilisation courante inclut le formatage de la date et de l'heure, l'analyse de la date et de l'heure et la définition du fuseau horaire, tandis que l'utilisation avancée inclut les caractères d'échappement, le formatage des nombres et les modes de formatage.

De plus, cet article mentionne également SimpleDateFormatles avantages, les inconvénients et les scénarios d'application. Il convient de noter que puisqu'il SimpleDateFormats'agit d'une classe non sécurisée pour les threads, elle doit être synchronisée dans un environnement multithread ou utiliser une alternative thread-safe. En étudiant cet article, les lecteurs peuvent mieux maîtriser SimpleDateFormatl'utilisation des cours, puis gérer la date et l'heure de manière plus flexible.

Cliquez pour suivre et découvrir les nouvelles technologies de Huawei Cloud dès que possible~

Lei Jun : La version officielle du nouveau système d'exploitation de Xiaomi, ThePaper OS, a été emballée. Une fenêtre contextuelle sur la page de loterie Gome App insulte son fondateur. Le gouvernement américain restreint l'exportation du GPU NVIDIA H800 vers la Chine. L'interface Xiaomi ThePaper OS est exposé. Un maître a utilisé Scratch pour frotter le simulateur RISC-V et il a fonctionné avec succès. Noyau Linux RustDesk Remote Desktop 1.2.3 publié, prise en charge améliorée de Wayland Après avoir débranché le récepteur USB Logitech, le noyau Linux a planté. DHH examen approfondi des "outils d'emballage" " : le front-end n'a pas du tout besoin d'être construit (No Build) JetBrains lance Writerside pour créer de la documentation technique Outils pour Node.js 21 officiellement publié
{{o.name}}
{{m.nom}}

Je suppose que tu aimes

Origine my.oschina.net/u/4526289/blog/10120385
conseillé
Classement