Przykłady Java Date i Calendar

Przykłady Java Date
-> Konwersja obiektu typu Date do String
-> Konwersja String -> Date
Przykłady Java Calendar
-> Poszczególne pola daty z Calendar
-> Ręczne ustawienie czasu w Java Calendar
-> Konwersje z Date do Calendar i na odwrót
Operacje na datach w Javie
-> Dodawanie i odejmowanie dni, miesięcy od bieżącej daty i godziny
-> Odejmowanie dat w Javie – sposób I
Przykład Joda Time – odejmowanie dat – sposób II

Przykłady Java Date

Przykład 1: Konwersja obiektu typu Date do String

// Konwertowanie daty Java Date do String
// Pobranie aktualnej daty i godziny
Date currentDate = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
String dateString = dateFormat.format(currentDate);
System.out.println(dateString);

 

Przykład 2: Konwersja daty zapisanej w String do Date

// Konwersja String do Java Date
SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
String dateString = "04.08.2015 07:42:00";
Date date = dateFormat.parse(dateString);
System.out.println(date);

Przykłady Java Calendar

Przykład 3: Pobranie aktualnego czasu Java Calendar oraz pobieranie wartości poszczególnych pól daty i godziny

// Pobranie aktualnego czasu wykorzystując Calendar
Calendar calendar = Calendar.getInstance();
 
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
System.out.println(dateFormat.format(calendar.getTime()));
 
// Pobranie aktualnego roku
System.out.println("Rok: \t\t\t\t" + calendar.get(Calendar.YEAR));
// Pobranie aktualnego miesiąca (0 - styczeń, 1 - luty, ..., 11 - grudzień
System.out.println("Miesiąc: \t\t\t" + calendar.get(Calendar.MONTH));
// Pobranie dnia miesiąca
System.out.println("Dzień miesiąca: \t\t" + calendar.get(Calendar.DAY_OF_MONTH));
// Pobranie dnia tygodnia (1 - poniedziałek)
System.out.println("Dzień tygodnia: \t\t" + calendar.get(Calendar.DAY_OF_WEEK));
// Pobranie numeru tygodnia
System.out.println("Numer tygodnia w roku: \t\t" + calendar.get(Calendar.WEEK_OF_YEAR));
 
// Pobranie godziny w dwunastogodzinnym trybie (1-12)
System.out.println("Godzina (1-12): \t\t" + calendar.get(Calendar.HOUR));
// Pobranie godziny (24h)
System.out.println("Godzina (1-24): \t\t" + calendar.get(Calendar.HOUR_OF_DAY));
// Pobranie minuty
System.out.println("Minuta: \t\t\t" + calendar.get(Calendar.MINUTE));
// Pobranie sekundy z Calendar
System.out.println("Sekunda: \t\t\t" + calendar.get(Calendar.SECOND));
// Pobranie milisekundy z Java Calendar
System.out.println("Milisekunda: \t\t\t" + calendar.get(Calendar.MILLISECOND));

Przykładowy wynik działania:

04-08-2015 13:39:11
Rok: 				2015
Miesiąc: 			7
Dzień miesiąca: 		4
Dzień tygodnia: 		3
Numer tygodnia w roku: 		32
Godzina (1-12): 		1
Godzina (1-24): 		13
Minuta: 			39
Sekunda: 			11
Milisekunda: 			631

Przykład 4: Ręczne ustawienie czasu w Java Calendar

// Ręczne ustawianie czasu używając Calendar
Calendar calendar = new GregorianCalendar(2015, 8, 4, 10, 44, 0);
 
SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
System.out.println(dateFormat.format(calendar.getTime()));

Przykład 5: Konwersja Date -> Calendar i na odwrót

// Konwersja Java Date -> Java Calendar -> Java Date
Date date = new Date();
System.out.println("Data i godzina typu (Java) Date: " + date);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
System.out.println("Data i godzina przechowywana w obiekcie typu (Java) calendar: " + calendar.getTime());
// Konwersja Calendar -> Java Date
date = calendar.getTime();
System.out.println("I znów data i godzina typu Date: " + date);

Przykładowy wynik:

Data i godzina typu (Java) Date: Tue Aug 04 11:45:31 CEST 2015
Data i godzina przechowywana w obiekcie typu (Java) calendar: Tue Aug 04 11:45:31 CEST 2015
I znów data i godzina typu Date: Tue Aug 04 11:45:31 CEST 2015

Operacje na datach w Javie

Przykład 6: Dodawanie i odejmowanie dni, miesięcy od bieżącej daty i godziny

SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
 
// Dodanie dnia do dzisiejszej daty w Javie (jutro :) )
Calendar calendar = Calendar.getInstance();
System.out.println("Dziś: " + dateFormat.format(calendar.getTime()));
calendar.add(Calendar.DAY_OF_MONTH, 1);
System.out.println("Jutro: " + dateFormat.format(calendar.getTime()));
 
// Odjęcie dnia od dzisiejszej daty (wczoraj :) )
// Przy odejmowaniu również używa się metody add
// w parametrze podając ujemną liczbę dni do dodania
calendar = Calendar.getInstance();
System.out.println("Dziś: " + dateFormat.format(calendar.getTime()));
calendar.add(Calendar.DAY_OF_MONTH, -1);
System.out.println("Wczoraj: " + dateFormat.format(calendar.getTime()));
 
// Za kwartał, czyli dodanie trzech miesięcy
calendar = Calendar.getInstance();
System.out.println("Dziś: " + dateFormat.format(calendar.getTime()));
calendar.add(Calendar.MONTH, 3);
System.out.println("Za kwartał: " + dateFormat.format(calendar.getTime()));

Przykładowy wynik działania powyższego kodu:

Dziś:       04.08.2015 18:45:31
Jutro:      05.08.2015 18:45:31
Dziś:       04.08.2015 18:45:31
Wczoraj:    03.08.2015 18:45:31
Dziś:       04.08.2015 18:45:31
Za kwartał: 04.11.2015 18:45:31

Przykład 7: Odejmowanie dat – sposób I

// Odejmowanie dwóch dat - sposób I
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.set(2000, 1, 1);
c2.set(2015, 1, 1);
 
long differenceInMillis = c2.getTimeInMillis() - c1.getTimeInMillis();
Calendar result = Calendar.getInstance();
result.setTimeInMillis(differenceInMillis);
 
// Obiekt result zawiera wynik odejmowania dwóch dat w Javie
// Teraz, żeby np. wziąć liczbę dni z tego wyniku należy pobrać z niego
// liczbę milisekund i podzielić przez liczbę milisekund w dobie
long liczbaMSwDobie = 1000 * 60 * 60 * 24;
System.out.println("Liczba dni z różnicy c2 - c1 wynosi: "
        + "" + (result.getTimeInMillis() / liczbaMSwDobie)); // wynik: 5479

I przykładowy wynik odejmowania dat:

Liczba dni z różnicy c2 - c1 wynosi: 5479

Przykład wykorzystania biblioteki Joda Time

Przykład 8: Odejmowanie dat – sposób II

Ze względu na to, że operacje na datach wykorzystując standardowe biblioteki Java jest toporne, sugeruję wykorzystanie biblioteki Joda Time

Prostotę tej biblioteki względem standardowej pokazuje następujący przykład odejmowania dat. Można porównać z poprzednim przykładem

// Wykorzystanie Joda time
DateTime d1 = new DateTime(2000, 1, 1, 0, 0, 0, 0);
DateTime d2 = new DateTime(2015, 1, 1, 0, 0, 0, 0);
int days = Days.daysBetween(d1, d2).getDays();
System.out.println("Liczba dni wynosi: " + days);
 
// Analogicznie można otrzymać liczbę miesięcy
int months = Months.monthsBetween(d1, d2).getMonths();
System.out.println("Liczba miesięcy: " + months);

Wynikiem powyższego przykładu jest:

Liczba dni wynosi: 5479
Liczba miesięcy: 180

 

Zobacz również:

Java Date – Jak ustawić wczorajszą datę

SimpleDateFormat – klasa wykorzystywana do formatowania i parsowania dat

Masz coś do powiedzenia:

Korzystając z tej strony zgadzasz się na stosowanie ciasteczek (ang. cookies) Więcej informacji

Ustawienia ciasteczek dla tej strony strony są ustawione na "Zezwalaj", dzięki czemu masz możliwość w pełni korzystać ze strony.

Zamknij

Copyright © 2018. Powered by WordPress & Romangie Theme.

Korzystając z tej strony zgadzasz się na stosowanie ciasteczek (ang. cookies) Więcej informacji

Ustawienia ciasteczek dla tej strony strony są ustawione na "Zezwalaj", dzięki czemu masz możliwość w pełni korzystać ze strony.

Zamknij