Datum a čas v Javě
Z MiS
(Rozdíly mezi verzemi)
(Přidán příklad použití třídy DateFormat.) |
(Upraveno - použití LocaDate) |
||
(Nejsou zobrazeny 2 mezilehlé verze od 1 uživatele.) | |||
Řádka 1: | Řádka 1: | ||
[[Category:VSE]][[Category:Informatika]][[Category:Programování]][[Category:Java]] | [[Category:VSE]][[Category:Informatika]][[Category:Programování]][[Category:Java]] | ||
+ | == Knihovna == | ||
+ | * <code>java.time</code> | ||
+ | ; Třídy | ||
+ | * <code>LocalDate</code> | ||
+ | * <code>LocalTime</code> | ||
+ | * <code>LocalDateTime</code> | ||
+ | * <code>DateTimeFormatter</code> | ||
+ | |||
+ | == Vytvoření instance == | ||
+ | * Dnešní datum: | ||
+ | LocalDate.now(); | ||
+ | * Rozklad na položky a spojení: | ||
+ | LocalDate.of(''year'', ''month'', ''day''); | ||
+ | * Vytvoření data podle textového zápisu: | ||
+ | LocalDate.parse("2015-12-22"); | ||
+ | |||
+ | == Formátování, konverze == | ||
+ | * Vlastní formát data: <code>DateTimeFormatter</code> | ||
+ | DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d. M. yyyy"); | ||
+ | LocalDate.parse("22. 12. 2015", formatter); | ||
+ | * Export do textového zápisu: | ||
+ | localDate.format(formatter) | ||
+ | |||
+ | * Převod na čas: | ||
+ | localDate.atStartOfDay() | ||
+ | localDate.atStartOfDay(ZoneId.of( "America/Montreal" ) ) | ||
+ | * Převod na starší třídu <code>Date</code>: | ||
+ | Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); | ||
Řádka 20: | Řádka 48: | ||
+ | <!-- ========================================================================== | ||
+ | == Starší třídy z předchozích verzí Javy: == | ||
− | == Třída <code>java.text.DateFormat</code> == | + | |
+ | === Třída <code>java.text.DateFormat</code> === | ||
* Převod data na naformátovaný textový řetězec. | * Převod data na naformátovaný textový řetězec. | ||
− | * Zohledňuje aktuální národní nastavení Javy (Locale), časové zóny, světové časy. | + | * Zohledňuje aktuální národní nastavení Javy (Locale), časové zóny, světové časy. Můžeme vybrat mezi dlouhým a krátkým zápisem data pomocí konstant <code>DateFormat.SHORT|MEDIUM|LONG</code>. |
− | + | ||
− | + | ||
− | + | ||
− | + | ; Vytvoření instance | |
* <code>DateFormat DateFormat.getDateInstance()</code> | * <code>DateFormat DateFormat.getDateInstance()</code> | ||
** vytvoří instanci s místním nastavením zobrazení pro datum. | ** vytvoří instanci s místním nastavením zobrazení pro datum. | ||
* <code>DateFormat DateFormat.getTimeInstance()</code> | * <code>DateFormat DateFormat.getTimeInstance()</code> | ||
+ | ** vytvoří instanci s místním nastavením zobrazení pro čas. | ||
+ | * <code>DateFormat DateFormat.getDateTimeInstance()</code> | ||
** vytvoří instanci s místním nastavením zobrazení pro čas. | ** vytvoří instanci s místním nastavením zobrazení pro čas. | ||
− | ; Převody na text | + | ; Převody na text ↔ datum |
* <code>Date dateFormat.parse(String s)</code> | * <code>Date dateFormat.parse(String s)</code> | ||
− | ** | + | ** Převod textového zápisu na datum. |
* <code>String dateFormat.format(Date date)</code> | * <code>String dateFormat.format(Date date)</code> | ||
− | ** | + | ** Naformátuje datum podle aktuálního národního nastavení a vrátí odpovídající text. |
− | + | ; Příklady použití | |
+ | DateFormat df; | ||
String datumTextove = ...; | String datumTextove = ...; | ||
− | + | df = DateFormat.getDateInstance(); | |
Date datum = df.parse(datumTextove); | Date datum = df.parse(datumTextove); | ||
... | ... | ||
System.out.println(df.format(datum)); | System.out.println(df.format(datum)); | ||
+ | DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT); | ||
+ | ... | ||
+ | |||
+ | DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG); | ||
+ | ... | ||
+ | |||
+ | |||
+ | |||
+ | == Třída <code>java.text.SimpleDateFormat</code> == | ||
+ | * Potomek třídy <code>DateFormat</code>. | ||
+ | * Umožňuje pomocí textového popisu nastavit vlastní formát data. | ||
+ | * Popis formátu data viz [https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html Dokumentace třídy <code>SimpleDateFormat</code>] | ||
+ | |||
+ | ; Vytvoření instance | ||
+ | * Konstruktor <code>SimpleDateFormat(String formát)</code>: | ||
+ | * Formát zápisu data se píše jako textový řetězec složený z položek: | ||
+ | *# <code>d</code> ... Zápis dne v měsící (<code>dd</code> znamená zápis včetně úvodní nuly — <code>"01"</code>). | ||
+ | *# <code>M</code> ... Zápis měsíce (<code>MM</code> znamená zápis včetně úvodní nuly — <code>"01"</code>, <code>MMM</code> textový zápis — <code>březen</code>). | ||
+ | *# <code>y</code> ... Zápis roku (<code>yy</code> nebo <code>yyyy</code>). | ||
+ | *# <code>h</code> ... Hodiny | ||
+ | *# <code>m</code> ... Minuty | ||
+ | *# ... | ||
+ | |||
+ | ; Příklady použití | ||
+ | String datumTextove = ...; | ||
+ | SimpleDateFormat df = new SimpleDateFormat("d. M. yyyy"); | ||
+ | Date datum = df.parse(datumTextove); | ||
+ | ... | ||
+ | System.out.println(df.format(datum)); | ||
Řádka 60: | Řádka 120: | ||
* prakticky pouze <code>GregorianCalendar</code> — gregoriánský kalendář. | * prakticky pouze <code>GregorianCalendar</code> — gregoriánský kalendář. | ||
− | + | ; Metody | |
* <code>Calendar.getInstance()</code> | * <code>Calendar.getInstance()</code> | ||
** získáme kalendář s aktuálním datem | ** získáme kalendář s aktuálním datem | ||
+ | |||
+ | --> |
Aktuální verze z 4. 2. 2019, 11:40
Obsah |
Knihovna
-
java.time
- Třídy
-
LocalDate
-
LocalTime
-
LocalDateTime
-
DateTimeFormatter
Vytvoření instance
- Dnešní datum:
LocalDate.now();
- Rozklad na položky a spojení:
LocalDate.of(year, month, day);
- Vytvoření data podle textového zápisu:
LocalDate.parse("2015-12-22");
Formátování, konverze
- Vlastní formát data:
DateTimeFormatter
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d. M. yyyy"); LocalDate.parse("22. 12. 2015", formatter);
- Export do textového zápisu:
localDate.format(formatter)
- Převod na čas:
localDate.atStartOfDay() localDate.atStartOfDay(ZoneId.of( "America/Montreal" ) )
- Převod na starší třídu
Date
:
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
Třída java.util.Date
- Dnes slouží pouze pro uchování času
- Historicky obsahuje i metody pro analýz časového údaje (převod na den + měsíc + rok atd.), tyto metody jsou dnes již zastaralé.
- Časový údaj uchovává jako počet milisekund od The Epoch (1. 1. 1970 00:00:00)
Metody
- konstruktor
Date()
- vytvoří instanci reprezentující aktuální datum a čas
- Porovnání dvou dat (které datum je starší?)
-
boolean before(Date druhe)
-
boolean after(Date druhe)
-
int compareTo(Date anotherDate)