Der Datentyp Date - 1

„Hi, Amigo. Ich möchte dir von einem interessanten Typ namens Date erzählen. Dieser Typ speichert das Datum und die Uhrzeit und kann auch Zeitintervalle messen.“

„Klingt interessant. Bitte erzähl mir mehr.“

„Jedes Date-Objekt speichert eine Zeit in einem ziemlich interessanten Format: die Anzahl der Millisekunden seit dem 1. Januar 1970 GMT.“

„Oha!“

„Ja. Diese Zahl ist so groß, dass sie nicht genügend Platz in einem int hat, weshalb sie in einem long gespeichert werden muss. Aber sie ist wirklich praktisch, wenn man die Differenz zwischen zwei beliebigen Daten berechnen möchte. Man braucht lediglich eine Subtraktion, um den Unterschied mit millisekundengenauer Genauigkeit zu finden. Außerdem löst diese Vorgehensweise auch das Problem der Datumsgrenze und der Sommerzeit.“

„Doch das Interessanteste ist, dass jedes Objekt bei seiner Erstellung mit der aktuellen Uhrzeit initialisiert wird. Um die aktuelle Uhrzeit zu erfahren, musst du nur ein Date-Objekt erstellen.“

„Wie arbeitet man damit?“

„Hier ein paar Beispiele:“

Aktuelles Datum abrufen:
public static void main(String[] args) throws Exception
{
     Date heute = new Date();
     System.out.println("Aktuelles Datum: " + heute);
}
Differenz zwischen zwei Datumsangaben berechnen:
public static void main(String[] args) throws Exception
{
    Date aktuelleZeit = new Date();           // Aktuelles Datum und Uhrzeit abrufen
    Thread.sleep(3000);                      // 3 Sekunden (3000 Millisekunden) warten
    Date neueZeit = new Date();               // Neue aktuelle Zeit abrufen

    long msVerzoegerung = neueZeit.getTime() - aktuelleZeit.getTime(); // Differenz berechnen
    System.out.println("Die Zeitdifferenz ist: " + msVerzoegerung + " in ms");
}
Prüfen, ob eine bestimmte Zeitspanne vergangen ist:
public static void main(String[] args) throws Exception
{
    Date startzeit = new Date();

    long endzeit = startzeit.getTime() + 5000;  //    +5 Sekunden
    Date endzeit = new Date(endzeit);

    Thread.sleep(3000);              // 3 Sekunden warten

    Date aktuelleZeit = new Date();
    if(aktuelleZeit.after(endzeit))// Prüfen, ob aktuelleZeit nach endzeit liegt
    {
        System.out.println("Endzeit!");
    }
}
Bestimmen, wie viel Zeit seit Beginn des Tages vergangen ist:
public static void main(String[] args) throws Exception
{
    Date aktuelleZeit = new Date();
    int stunden = aktuelleZeit.getHours();
    int minuten = aktuelleZeit.getMinutes();
    int sekunden = aktuelleZeit.getSeconds();

    System.out.println("Vergangene Zeit seit Mitternacht " + stunden + ":" + minuten + ":" + sekunden);
}
Bestimmen, wie viele Tage seit Jahresbeginn vergangen sind:
public static void main(String[] args) throws Exception
{
    Date jahrStartzeit = new Date();
    jahrStartzeit.setHours(0);
    jahrStartzeit.setMinutes(0);
    jahrStartzeit.setSeconds(0);

    jahrStartzeit.setDate(1);      // Erster Tag des Monats
    jahrStartzeit.setMonth(0);     // Januar (die Monate haben die Indizes 0 bis 11)

    Date aktuelleZeit = new Date();
    long msZeitdifferenz = aktuelleZeit.getTime() - jahrStartzeit.getTime();
    long msTag = 24 * 60 * 60 * 1000;  // Die Zahl der Millisekunden in 24 Stunden

    int tagesanzahl = (int) (msZeitdifferenz/msTag); // Die Anzahl der ganzen Tage
    System.out.println("Vergangene Tage seit Jahresbeginn: " + tagesanzahl);
}
2
Aufgabe
Java Syntax, Level 8, Lektion 4
Gesperrt
Code-Eingabe
Manchmal darf man gar nicht nachdenken, man muss es einfach raushauen! Auch wenn es sich paradox anhört, manchmal „erinnern“ sich deine Finger besser als dein bewusster Verstand. Deshalb wirst du es im Rahmen der Schulung im geheimen CodeGym-Zentrum manchmal mit Aufgaben zu tun bekommen, bei denen du Code eingeben musst. Wenn du Code eingibst, gewöhnst du dich an die Syntax und sammelst ein wenig dunkle Materie. Außerdem tust du etwas gegen deine Faulheit!

„Die getTime()-Methode gibt die Anzahl der Millisekunden zurück, die in einem Date-Objekt gespeichert sind.“

„Die after()-Methode prüft, ob das Datum, an dem wir die Methode aufgerufen haben, nach dem Datum liegt, das an die Methode übergeben wird.“

„Die Methoden getHours(), getMinutes(), getSeconds() liefern die Anzahl der Stunden, Minuten und Sekunden für das Objekt, für das sie aufgerufen werden.“

„Außerdem siehst du im letzten Beispiel, dass du das in einem Date-Objekt gespeicherte Datum/die Uhrzeit ändern kannst. Wir rufen die aktuelle Uhrzeit und das aktuelle Datum ab und setzen dann die Stunden, Minuten und Sekunden auf 0 zurück. Wir legen zudem Januar als Monat und 1 als Tag des Monats fest. Somit speichert das jahrStartzeit-Objekt das Datum des 1. Januar des aktuellen Jahres und die Uhrzeit 00:00:00 Uhr.“

„Danach rufen wir wieder das aktuelle Datum (aktuelleZeit) ab, berechnen die Differenz zwischen den beiden Datumsangaben in Millisekunden und speichern sie in msZeitdifferenz.“

„Dann dividieren wir msZeitdifferenz durch die Anzahl der Millisekunden in 24 Stunden, um die Anzahl der ganzen Tage vom Beginn des laufenden Jahres bis heute zu erhalten.“

„Wow! Das ist echt cool!“