# Wieviele Tage seit dem Datum vergangen sind



## PermanenT1337 (1. Aug 2014)

Guten Tag,
ich möchte berechnen wie viele Tage vergangen sind seit einem bestimmten Datum.
Sagen wir einfach dem 01.07.2014 wie mach ich es das er mir ausgibt das 32 Tage seit dem vergangen sind?
Wäre echt nett wenn ihr mir helfen könntet.

Mit freundlichen Grüßen
PermanenT


----------



## Phash (1. Aug 2014)

na, entweder, du machst das mit der Hand (das hat übenden Charakter)
oder du nimmst ne Api

z.B.: Joda Time:

```
Date past = new Date(110, 5, 20); // June 20th, 2010
Date today = new Date(110, 6, 24); // July 24th 
int days = Days.daysBetween(new DateTime(past), new DateTime(today)).getDays(); // => 34
```

oder Java8:


```
LocalDate startDate = LocalDate.now().minusDays(1);
    LocalDate endDate = LocalDate.now();
    
    long days = Period.between(startDate, endDate).getDays();
   
   //oder 
    long days2 = ChronoUnit.DAYS.between(startDate, endDate);
```


----------



## PermanenT1337 (1. Aug 2014)

@Phash:
könntest du mir dazu vielleicht was erklären?
z.B. wie ich das jetzt auslesen könnte.
Und was da grade genau passiert?
Damit ich es besser nachvollziehen kann


----------



## Phash (1. Aug 2014)

was möchtest du auslesen?  in days sind die Tage drin. Die Java8 Time Api gibt dir aber nur die Tage an (in dem Beispiel) 
ich müsst nachschauen, wie man die kompletten Tage rauskriegt, aber das kannst du sicher googlen.


schreibs in deinen Code... da kansnt du es doch auslesen - und geh in die Methoden rein, die dich interessieren, um zu schauen, was sie machen


----------



## PermanenT1337 (1. Aug 2014)

Hey,
bei dem Zweiten Code weiß ich doch garnicht wo ich dort das Datum eintragen muss?


----------



## valentina2013 (1. Aug 2014)

hey, 

die gleiche aufgabe hatte ich auch mal 

```
public class TageSeit2
{

 public static void main(String[] args)
{
        int anzahl = args.length;               //um zu  prüfen wieviele Argumente übergeben wurden  Tage Monat Jahr
        int tage = Integer.parseInt( args[0] );  // Umwandlung der kommandozeilenstrings in die entsprechenden int-Werte
        int monat = Integer.parseInt( args[1] );
        int jahr = Integer.parseInt( args[2] );


        if((anzahl!=3)||(tage<1)||(tage>31)||(monat<1)||(monat>12))   //auschliessen dass mehr als drei Argumente übergeben werden,dass tage und monate ungültige werte anehmen
                          System.out.printf("Ungültige  Eingabe! Erforderliches Eingabeformat:TageSeit [Tage][Monat][Jahr] %n  Ein Monat hat höchstens 31 Tage %nEin Jahr hat höchstens 12 Monaten%n ");
      else // wenn die eingaben korrekt sind 
   {{
        int[] erlaubteTageImMonat={31,28,31,30,31,30,31,31,30,31,30,31};//Initialisierung  mit der Anzahl der  Tagen im monat. Schließt  die Eingabe von 
                                                                        // nicht korrekten  Zahl der Tage im monat aus

                if ((jahr%4==0))//&&(jahr%400==0)&&(jahr%100!=0));                        
                //ausnahme für ein Schaltjahr,Februar hat 29 Tage
                 erlaubteTageImMonat[1]=29;

                   if(erlaubteTageImMonat[monat-1]>=tage)             //ausschließen dass die eingegebene Tage der erlaubten Anzahl überschreitet
      {
        int[] tageLaufendesJahr= {0,31,59,90,120,151,181,212,243,273,304,334,365};  // Initialisierung mit den tagen bis dato
        int gesamteTage=jahr*365;                                                  //berechnet die Tage der ganzen Jahre die vergangen sind
        int ganzeTageMonat= tageLaufendesJahr[monat-1] + tage;                    //Gehe einen Monat zurück und berechne die Tage bis dahin, addiere anschliened die Tage des laufenden Monats
        int vorErgebnis=ganzeTageMonat+gesamteTage;                           //addiere auf diesen Wert die Gesamtzahlt der Jahre * 365 dann hast du die tage seit dem 1.1.0 ohne Korrektur

        int ersteKorrektur= jahr / 4 ;              // wieviele Schaltjahre gibt es
        int zweiteKorrektur=jahr / 100;             // wenn das Jahr durch 100 teilbar handelt es sich nicht um ein Schaltjahr
        int dritteKorrektur=jahr/400;             //wenn das Jahr durch 400 teilbar ist handelt es sich um ein Schaltjahr
        int gesamtErgebnis = vorErgebnis +ersteKorrektur-zweiteKorrektur-1+dritteKorrektur ;    // -1 weil nicht vom 00.01.0000 sondern vom 01.01.0000 gerechnet wird;  

          System.out.println("Es sind " + gesamtErgebnis + " Tag(e) seit dem 01.01.0000 vergangen");
              }
 else
                   System.out.printf("Falsche Eingabe! Der %d. Monat (In dem Jahr %d) hat höchstens "+erlaubteTageImMonat[monat-1]+" "+"Tage%n", monat, jahr );

                     }
                        }
                            }
                                }
```
Hoffe kannst alles nachvollziehen


----------

