Представяме ви тип Дата - 1

"Здравей, Амиго. Искам да ти разкажа за един интересен тип, наречен Date. Този тип съхранява датата и часа и може също да измерва времеви интервали."

„Звучи интересно. Моля, продължете.“

„Всеки обект Date съхранява време в доста интересна форма: броят мorсекунди от 1 януари 1970 г., GMT.“

"Уау!"

„Да. Това число е толкова голямо, че няма достатъчно място за него в int , така че трябва да се съхранява в long . Но е наистина удобно за изчисляване на разликата между две дати. Просто правите изваждане, за да намерите разликата с точност до мorсекунда. Освен това решава проблема с линията за дата и лятното часово време."

"Най-интересната част е, че всеки обект се инициализира с текущия час при създаването си. За да знаете текущия час, просто трябва да създадете обект Date."

"Как работите с него?"

"Ето няколко примера:"

Вземете текущата дата:
public static void main(String[] args) throws Exception
{
     Date today = new Date();
     System.out.println("Current date: " + today);
}
Изчислете разликата между двете дати
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");
}
Проверете дали е минало определено време:
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!");
    }
}
Определете колко време е минало от началото на деня:
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);
}
Определете колко дни са изминали от началото на годината:
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);
}

getTime()Методът връща броя мorсекунди, съхранени в обект Date.“

after()Методът проверява дали датата, на която сме извикали метода, идва след датата, предадена на метода.“

getHours(), getMinutes(), getSeconds()Методите връщат съответно броя часове, minutesи и секунди за обекта, на който са бor извикани.“

„Освен това, в последния пример можете да видите, че можете да промените датата/часа, съхранени в обект Date . Получаваме текущия час и дата и след това нулираме часовете, minutesите и секундите на 0. Също така задаваме януари като месец и 1 като ден от месеца. Така обектът yearStartTimeсъхранява датата 1 януари на текущата година и часа 00:00:00."

„След това отново получаваме текущата дата ( currentTime), изчисляваме разликата между двете дати в мorсекунди и я съхраняваме в msTimeDifference.“

„След това разделяме msTimeDifferenceна броя мorсекунди за 24 часа, за да получим броя на пълните дни от началото на текущата година до днес.“

„Уау! Това е толкова готино!“