[Android, Java] Méthode pour trouver la date écoulée à partir de deux dates

Chose que tu veux faire

Obtenez la date écoulée (par exemple, 0 an, 0 mois, 0 jour) à partir des deux dates. Exemple 01/08/2020 et 03/08/2020 → 0 ans 0 mois 2 jours 01/08/2020 et 01/09/2020 → 0 ans 1 mois 0 jours 01/08/2020 et 01/08/2021 → 1 an 0 mois 0 jour


spécification

-Date date> À date renvoie une erreur (code d'erreur: -1) ・ Le format de la date est aaaa / MM / jj uniquement -From date et To date sont tous deux de type chaîne ・ Renvoie l'année, le mois et le jour avec int [](0: année, 1: mois, 2: jour)


la mise en oeuvre

    public static int getDateDiff(String paraFromDate, String paraToDate, int[] paraDiffDay) {
        int     diffYear = 0 ;
        int     diffMonth = 0 ;
        int     diffDay = 0 ;

        //Décomposer la date de début en année, mois et jour(From)
        int     from_year = parseInt(paraFromDate.substring(0,4)) ;
        int     from_month = parseInt(paraFromDate.substring(5,7)) ;
        int     from_day = parseInt(paraFromDate.substring(8,10)) ;

        //Décomposer la date de base en années, mois et jours(To)
        int     to_year = parseInt(paraToDate.substring(0,4)) ;
        int     to_month = parseInt(paraToDate.substring(5,7)) ;
        int     to_day = parseInt(paraToDate.substring(8,10)) ;

        Calendar comp_from = Calendar.getInstance() ;
        comp_from.set(from_year, from_month - 1, from_day) ;

        Calendar comp_to = Calendar.getInstance() ;
        comp_to.set(to_year, to_month - 1, to_day) ;

        //Date de début>S'il s'agit d'une date de base, faites une erreur
        if(comp_from.compareTo(comp_to) > 0) {
            return -1;
        }

        //Obtenez la différence d'année
        diffYear = to_year - from_year ;

        //Comparer les mois
        if(from_month > to_month) {
            //Lorsque le mois de la date de début est plus grand=Tout au long de l'année
            to_month = to_month + 12 ;
            //Moins année
            //Si c'est la même année du_le mois ne peut jamais être plus grand, donc il ne peut pas être négatif
            diffYear = diffYear - 1 ;
        }

        //Obtenez la différence mensuelle
        diffMonth = to_month - from_month ;

        //Comparer les jours
        //Date de début(From)Si c'est plus grand, on juge qu'il chevauche la lune
        if(from_day > to_day) {
            //Ajouter le nombre maximum de dates de début
            to_day = to_day + comp_from.getActualMaximum(comp_from.DATE) ;
            //Moins la différence entre les mois
            diffMonth = diffMonth - 1 ;
        }
        //Obtenez la différence entre les jours
        diffDay = to_day - from_day ;

        //Définir en argument
        paraDiffDay[0] = diffYear ;
        paraDiffDay[1] = diffMonth ;
        paraDiffDay[2] = diffDay ;

        return 0 ;

    }

Votre interlocuteur

    String fromDate = '2020/08/20' ;
    String toDate = '2020/10/01' ;
    int diffDate[] = {0,0,0} ;
    if( getDateDiff(fromDate, toDate, diffDate) != 0 ) {
        //Erreur
    }
    else {
        String keikaDate = diffDate[0] + "Année" + diffDate[1] + "Mois" + diffDate[2] + "journée" ;
    }
    

Problèmes, problèmes

・ Aucune gestion des erreurs → Une exception se produit si la date de l'argument n'est pas au format aaaa / MM / jj → Si la date n'existe pas même au format aaaa / MM / jj, le comportement est incorrect.


bon point

-Obtenir le nombre maximum de jours dans le mois en utilisant getActualMaximum → Au début 31 janvier, 3,5,7,8,10, décembre 30 avril, juin, septembre et novembre J'ai essayé de faire le 29 février si c'était une année humide, et le 28 si ce n'était pas le cas. Résolu avec une phrase de getActualMaximum.

Recommended Posts

[Android, Java] Méthode pour trouver la date écoulée à partir de deux dates
[Java] Je souhaite calculer la différence par rapport à la date
[Android, Java] Méthode pratique pour calculer la différence en jours
La route de JavaScript à Java
[Ruby] Des bases à la méthode inject
[Java] Comment utiliser la méthode toString ()
[Java] Comment régler la date sur 00:00:00
Comment obtenir la date avec Java
Traitement itératif de Ruby en utilisant chaque méthode (trouver la somme de 1 à 10)
[Android] Appeler la méthode d'argument par défaut de Kotlin depuis Java
[Java] De deux listes à une liste de tableaux
[Android] Calculez facilement la différence entre deux dates
Comment utiliser la méthode replace () (Java Silver)
Changements de Java 8 à Java 11
Somme de Java_1 à 100
Comment écrire Scala du point de vue de Java
[Java] Comment extraire le nom du fichier du chemin
[Android Studio] [Java] Comment réparer l'écran verticalement
De Java à Ruby !!
[Android] Téléchargement d'images du terminal vers le serveur
Comment obtenir le nom d'une classe / méthode exécutée en Java
Java qui ignore les données d'Android vers le ROS de Jetson Nano
Trouvez la classe d'adresse et le type d'adresse à partir de l'adresse IP avec Java
[JDBC] J'ai essayé d'accéder à la base de données SQLite3 depuis Java.
Différence entre Java et JavaScript (comment trouver la moyenne)
Accédez à l'abréviation à partir de 5 exemples de listes Java en italique
Reportez-vous à C ++ dans le module Android Studio (Java / kotlin)
Comment créer un formulaire pour sélectionner une date dans le calendrier
Application Android qui sélectionne et affiche des images de la galerie
Créer une méthode pour renvoyer le taux de taxe en Java
[Java] Utilisez ResolverStyle.LENIENT pour bien gérer la date et l'heure
Envoyer la valeur du capteur d'accélération d'Android au PC par UDP
Migration de Cobol vers JAVA
Nouvelles fonctionnalités de Java7 à Java8
Connectez-vous de Java à PostgreSQL
De Java inefficace à Java efficace
Entrée dans la console Java
[Java débutant] Conversion d'une chaîne de caractères en valeur numérique - Quelle est la méthode parseInt de la classe Integer? ~
Android: Comment gérer "Impossible de déterminer la version Java à partir de '10 .0.1 '"
Si vous souhaitez modifier l'environnement de développement Java d'Eclipse
Connexion à une base de données avec Java (partie 1) Peut-être la méthode de base
De Java naissant (3 ans) à Node.js (4 ans). Et l'impression de retourner à Java
[Java] J'ai essayé de faire un labyrinthe par la méthode de creusage ♪
[Java] Comment convertir du type String en type Path et obtenir le chemin
[Android] Je souhaite obtenir l'auditeur à partir du bouton de ListView
Comment utiliser la méthode link_to
Comment utiliser la méthode include?
[java8] Pour comprendre l'API Stream
Comment trouver l'angle moyen
[Android] Obtenez la date du lundi
[Java] Comment utiliser la méthode de jointure
Exécutez node.js depuis Android Java (traitement)
Comparaison Java à l'aide de la méthode compareTo ()
J'ai essayé d'expliquer la méthode
Java sera impliqué dès aujourd'hui
De Java à VB.NET - Écriture de notes de contraste
Java, interface pour partir du débutant
Bienvenue dans le marais des bibliothèques Java! !!
Essayez d'extraire la méthode publique de java
Trouvez l'angle entre deux vecteurs
Réintroduction de Java8, disponible depuis Android Studio 2.4