[Android, Java] Methode zum Ermitteln des abgelaufenen Datums aus zwei Daten

Was du machen willst

Erhalten Sie das abgelaufene Datum (z. B. 0 Jahre, 0 Monate, 0 Tage) aus den beiden Daten. Beispiel 2020/08/01 und 2020/08/03 → 0 Jahre 0 Monate 2 Tage 2020/08/01 und 2020/09/01 → 0 Jahre 1 Monat 0 Tage 2020/08/01 und 2021/08/01 → 1 Jahr 0 Monate 0 Tage


Spezifikation


Implementierung

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

        //Teilen Sie das Startdatum in Jahr, Monat und Tag auf(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)) ;

        //Teilen Sie das Basisdatum in Jahr, Monat und Tag auf(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) ;

        //Anfangsdatum>Wenn es sich um ein Basisdatum handelt, machen Sie einen Fehler
        if(comp_from.compareTo(comp_to) > 0) {
            return -1;
        }

        //Holen Sie sich den Jahresunterschied
        diffYear = to_year - from_year ;

        //Vergleiche Monate
        if(from_month > to_month) {
            //Wenn der Monat des Startdatums größer ist=Im Laufe des Jahres
            to_month = to_month + 12 ;
            //Minus Jahr
            //Wenn es das gleiche Jahr von ist_Monat kann nie größer sein, also kann es nicht negativ sein
            diffYear = diffYear - 1 ;
        }

        //Holen Sie sich die Monatsdifferenz
        diffMonth = to_month - from_month ;

        //Tage vergleichen
        //Anfangsdatum(From)Wenn es größer ist, wird beurteilt, dass es den Mond überspannt
        if(from_day > to_day) {
            //Fügen Sie die maximale Anzahl von Startdaten hinzu
            to_day = to_day + comp_from.getActualMaximum(comp_from.DATE) ;
            //Abzüglich des Unterschieds zwischen den Monaten
            diffMonth = diffMonth - 1 ;
        }
        //Holen Sie sich den Unterschied zwischen den Tagen
        diffDay = to_day - from_day ;

        //In Argument setzen
        paraDiffDay[0] = diffYear ;
        paraDiffDay[1] = diffMonth ;
        paraDiffDay[2] = diffDay ;

        return 0 ;

    }

Anrufer

    String fromDate = '2020/08/20' ;
    String toDate = '2020/10/01' ;
    int diffDate[] = {0,0,0} ;
    if( getDateDiff(fromDate, toDate, diffDate) != 0 ) {
        //Error
    }
    else {
        String keikaDate = diffDate[0] + "Jahr" + diffDate[1] + "Monate" + diffDate[2] + "Tag" ;
    }
    

Probleme, Probleme

・ Keine Fehlerbehandlung → Eine Ausnahme tritt auf, wenn das Argumentdatum nicht das Format JJJJ / MM / TT hat → Wenn das Datum auch im Format JJJJ / MM / TT nicht vorhanden ist, ist das Verhalten falsch.


guter Punkt

  1. Januar, 3,5,7,8,10, Dezember
  2. im April, Juni, September und November Ich habe versucht, den 29. Februar zu machen, wenn es ein feuchtes Jahr war, und den 28. Februar, wenn es nicht war. Gelöst mit einem Satz von getActualMaximum.

Recommended Posts

[Android, Java] Methode zum Ermitteln des abgelaufenen Datums aus zwei Daten
[Java] Ich möchte die Differenz zum Datum berechnen
[Android, Java] Praktische Methode zur Berechnung der Differenz in Tagen
Der Weg von JavaScript nach Java
[Ruby] Von den Grundlagen bis zur Injektionsmethode
[Java] Verwendung der toString () -Methode
[Java] So stellen Sie die Datums- und Uhrzeit auf 00:00:00 ein
So erhalten Sie das Datum mit Java
Iterative Verarbeitung von Ruby mit jeder Methode (finde die Summe von 1 bis 10)
[Android] Rufen Sie Kotlins Standardargumentmethode von Java aus auf
[Java] Von zwei Listen zu einer Array-Liste
[Android] Berechnen Sie einfach die Differenz zwischen zwei Daten
Verwendung der replace () -Methode (Java Silver)
Änderungen von Java 8 zu Java 11
Summe von Java_1 bis 100
Wie schreibe ich Scala aus der Perspektive von Java
[Java] So extrahieren Sie den Dateinamen aus dem Pfad
[Android Studio] [Java] So fixieren Sie den Bildschirm vertikal
Von Java zu Ruby !!
[Android] Hochladen von Bildern vom Terminal auf den Server
So erhalten Sie den Namen einer Klasse / Methode, die in Java ausgeführt wird
Java, das Daten von Android zu Jetson Nanos ROS überspringt
Suchen Sie die Adressklasse und den Adresstyp aus der IP-Adresse mit Java
[JDBC] Ich habe versucht, von Java aus auf die SQLite3-Datenbank zuzugreifen.
Unterschied zwischen Java und JavaScript (wie man den Durchschnitt findet)
Kommen Sie zu den Abkürzungen aus den fünf Beispielen für kursive Java-Listen
Siehe C ++ im Android Studio-Modul (Java / Kotlin)
So erstellen Sie ein Formular zur Auswahl eines Datums aus dem Kalender
Android App, die Bilder aus der Galerie auswählt und anzeigt
Erstellen Sie eine Methode, um den Steuersatz in Java zurückzugeben
[Java] Verwenden Sie ResolverStyle.LENIENT, um Datum und Uhrzeit gut zu handhaben
Senden Sie den Wert des Beschleunigungssensors per UDP von Android an den PC
Migration von Cobol nach JAVA
Neue Funktionen von Java7 bis Java8
Stellen Sie eine Verbindung von Java zu PostgreSQL her
Von ineffektivem Java zu effektivem Java
Eingabe in die Java-Konsole
[Java-Anfänger] Konvertierung von Zeichenfolge in numerischen Wert - Was ist die parseInt-Methode der Integer-Klasse? ~
Android: Umgang mit "Java-Version von '10 .0.1 'konnte nicht ermittelt werden"
Wenn Sie die Java-Entwicklungsumgebung von Eclipse aus ändern möchten
Herstellen einer Verbindung zu einer Datenbank mit Java (Teil 1) Möglicherweise die grundlegende Methode
Vom jungen Java (3 Jahre) bis zu Node.js (4 Jahre). Und der Eindruck, nach Java zurückzukehren
[Java] Ich habe versucht, mit der Grabmethode ein Labyrinth zu erstellen ♪
[Java] So konvertieren Sie vom Typ String in den Pfadtyp und erhalten den Pfad
[Android] Ich möchte den Listener über die Schaltfläche in ListView abrufen
Verwendung der link_to-Methode
Verwendung der include? -Methode
[java8] Um die Stream-API zu verstehen
So finden Sie den durchschnittlichen Winkel
[Android] Holen Sie sich das Datum von Montag
[Java] Verwendung der Join-Methode
Führen Sie node.js von Android Java aus (Verarbeitung)
Java-Vergleich mit der compareTo () -Methode
Ich habe versucht, die Methode zu erklären
Java soll ab heute dabei sein
Von Java zu VB.NET-Writing Kontrastmemo-
Java, Schnittstelle für Anfänger
Willkommen im Sumpf der Java-Bibliotheken! !!
Versuchen Sie, die öffentliche Java-Methode zu extrahieren
Finden Sie den Winkel zwischen zwei Vektoren
Wiedereinführung von Java8, das seit Android Studio 2.4 verfügbar ist