Java Data i czas
Przyjrzyjmy się najpierw parametrom składającym się z a Data.
Będzie zawierać przede wszystkim –
- Kolekcja rok (w 2 lub 4 cyfrach)
- Kolekcja miesiąc (2 cyfry, pierwsze 3 litery miesiąca lub całe słowo miesiąca).
- Kolekcja dane (będzie to faktyczna data miesiąca).
- Kolekcja dzień (dzień w danej dacie – np. niedziela, poniedziałek, wtorek itp.)
Jeśli chodzi o systemy komputerowe, istnieje wiele parametrów, które można wykorzystać do skojarzenia z datą. Zobaczymy je w dalszych częściach tego tematu.
Wyświetl datę w Java
Teraz zobaczmy jak Java podaj nam datę. Najpierw zobaczymy, jak uzyskać bieżącą datę-
Java udostępnia klasę Date w pakiecie java.util. Pakiet udostępnia kilka metod umożliwiających zabawę z datą.
Obiektu Date można użyć wywołując konstruktor klasy Date w następujący sposób:
import java.util.Date; class Date_Ex1 { public static void main(String args[]) { // Instantiate a Date object by invoking its constructor Date objDate = new Date(); // Display the Date & Time using toString() System.out.println(objDate.toString()); } }
Wyjście:
Wed Nov 29 06:36:22 UTC 2017
W powyższym przykładzie data pokazana w formacie domyślnym. Jeśli chcemy pokazać datę i godzinę w innym formacie, najpierw zapoznaj się z formatowaniem daty.
SimpleDateFormat: analizuj i formatuj daty
Każdy z Was musiał uczyć się alfabetu w swoim przedszkolu….
Nauczmy się teraz ABC formatu daty.
List | Składnik daty lub godziny | Przykłady |
---|---|---|
G | Oznaczenie epoki | AD |
y | Rok | 2018 |
M | Miesiąc w roku | Lipiec lub lipiec lub 07 |
w | Tydzień w roku | 27 |
W | Tydzień w miesiącu | 2 |
D | Dzień w roku | 189 |
d | Dzień w miesiącu | 10 |
F | Dzień tygodnia w miesiącu | 2 |
E | Nazwa dnia w tygodniu | wtorek lub wtorek |
u | Numer dnia tygodnia (1 = Monday, …, 7 = niedziela) | 1 |
a | Znacznik am/pm | PM |
H | Godzina w dniu (0-23) | 0 |
k | Godzina w dniu (1-24) | 24 |
K | Godzina w am/pm (0-11) | 0 |
h | Godzina w am/pm (1-12) | 12 |
m | Minuta w godzinie | 30 |
s | Drugi w ciągu minuty | 55 |
S | Milisekunda | 978 |
z | strefa czasu | Czas pacyficzny; PST; GMT-08:00 |
Z | strefa czasu | -0800 |
X | strefa czasu | -08 lub -0800 lub -08:00 |
Nie martw się, nie musisz o tym wszystkim pamiętać, możesz do nich zajrzeć w dowolnym momencie, gdy chcesz sformatować konkretną datę.
Jak korzystać z SimpleDateFormat?
Java udostępnia klasę o nazwie SimpleDateFormat, która umożliwia formatowanie i analizowanie dat zgodnie z własnymi wymaganiami.
Możesz użyć powyższych znaków, aby określić format-
Na przykład:
1) Wymagany format daty: 2012.10.23, 20:20:45 czasu PST
Określony odpowiedni format daty będzie: rrrr.MM.dd GG:mm:ss zzz
2) Wymagany format daty:09:30:00 AM 23-May-2012
Określony odpowiedni format daty będzie:gg:mm:ss i dd-MMM-rrrr
Wskazówka: Uważaj na wielkość liter. Jeśli pomylisz M z m, otrzymasz niepożądane rezultaty!
Nauczmy się tego na przykładzie kodu.
import java.text.SimpleDateFormat; import java.util.Date; class TestDates_Format { public static void main(String args[]) { Date objDate = new Date(); // Current System Date and time is assigned to objDate System.out.println(objDate); String strDateFormat = "hh:mm:ss a dd-MMM-yyyy"; //Date format is Specified SimpleDateFormat objSDF = new SimpleDateFormat(strDateFormat); //Date format string is passed as an argument to the Date format object System.out.println(objSDF.format(objDate)); //Date formatting is applied to the current date } }
Wyjście:
Wed Nov 29 06:31:41 UTC 2017 06:31:41 AM 29-Nov-2017
Przykład porównania dat
Najbardziej użyteczną metodą porównywania dat jest metoda – CompareTo()
Rzućmy okiem na poniższy fragment kodu-
import java.text.SimpleDateFormat; import java.text.ParseException; import java.util.Date; class TestDates_Compare { public static void main(String args[]) throws ParseException { SimpleDateFormat objSDF = new SimpleDateFormat("dd-mm-yyyy"); Date dt_1 = objSDF.parse("20-08-1981"); Date dt_2 = objSDF.parse("12-10-2012"); System.out.println("Date1 : " + objSDF.format(dt_1)); System.out.println("Date2 : " + objSDF.format(dt_2)); if (dt_1.compareTo(dt_2) > 0) { System.out.println("Date 1 occurs after Date 2"); } // compareTo method returns the value greater than 0 if this Date is after the Date argument. else if (dt_1.compareTo(dt_2) < 0) { System.out.println("Date 1 occurs before Date 2"); } // compareTo method returns the value less than 0 if this Date is before the Date argument; else if (dt_1.compareTo(dt_2) == 0) { System.out.println("Both are same dates"); } // compareTo method returns the value 0 if the argument Date is equal to the second Date; else { System.out.println("You seem to be a time traveller !!"); } } }
Wyjście:
Date1 : 20-08-1981 Date2 : 12-10-2012 Date 1 occurs before Date 2