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 today = new Date();
     System.out.println("Current date: " + today);
}
Differenz zwischen zwei Datumsangaben berechnen:
public static void main(String[] args) throws Exception
{
    Date currentTime = new Date();           // Get the current date and time
    Thread.sleep(3000);                      // Wait 3 seconds (3000 milliseconds)
    Date newTime = new Date();               // Get the new current time

    long msDelay = newTime.getTime() - currentTime.getTime(); // Calculate the difference
    System.out.println("Time difference is: " + msDelay + " in ms");
}
Prüfen, ob eine bestimmte Zeitspanne vergangen ist:
public static void main(String[] args) throws Exception
{
    Date startTime = new Date();

    long endTime = startTime.getTime() + 5000;  //    +5 seconds
    Date endDate = new Date(endTime);

    Thread.sleep(3000);              // Wait 3 seconds

    Date currentTime = new Date();
    if(currentTime.after(endDate))// Check whether currentTime is after endDate
    {
        System.out.println("End time!");
    }
}
Bestimmen, wie viel Zeit seit Beginn des Tages vergangen ist:
public static void main(String[] args) throws Exception
{
    Date currentTime = new Date();
    int hours = currentTime.getHours();
    int mins = currentTime.getMinutes();
    int secs = currentTime.getSeconds();

    System.out.println("Time since midnight " + hours + ":" + mins + ":" + secs);
}
Bestimmen, wie viele Tage seit Jahresbeginn vergangen sind:
public static void main(String[] args) throws Exception
{
    Date yearStartTime = new Date();
    yearStartTime.setHours(0);
    yearStartTime.setMinutes(0);
    yearStartTime.setSeconds(0);

    yearStartTime.setDate(1);      // First day of the month
    yearStartTime.setMonth(0);     // January (the months are indexed from 0 to 11)

    Date currentTime = new Date();
    long msTimeDifference = currentTime.getTime() - yearStartTime.getTime();
    long msDay = 24 * 60 * 60 * 1000;  // The number of milliseconds in 24 hours

    int dayCount = (int) (msTimeDifference/msDay); // The number of full days
    System.out.println("Days since the start of the year: " + dayCount);
}

„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 yearStartTime-Objekt das Datum des 1. Januar des aktuellen Jahres und die Uhrzeit 00:00:00 Uhr.“

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

„Dann dividieren wir msTimeDifference 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!“