Datum a čas v Javě
Z MiS
(Rozdíly mezi verzemi)
m (Dodán popis formátu pro SimpleDateFormat.) |
(Upraveno - použití LocaDate) |
||
Řá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. Můžeme vybrat mezi dlouhým a krátkým zápisem data pomocí konstant <code>DateFormat.SHORT|MEDIUM|LONG</code>. | * 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. | ||
Řádka 34: | Řádka 65: | ||
** 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 ↔ datum | |
* <code>Date dateFormat.parse(String s)</code> | * <code>Date dateFormat.parse(String s)</code> | ||
** Převod textového zápisu na datum. | ** Převod textového zápisu na datum. | ||
Řádka 40: | Řádka 71: | ||
** Naformátuje datum podle aktuálního národního nastavení a vrátí odpovídající text. | ** Naformátuje datum podle aktuálního národního nastavení a vrátí odpovídající text. | ||
− | + | ; Příklady použití | |
DateFormat df; | DateFormat df; | ||
String datumTextove = ...; | String datumTextove = ...; | ||
Řádka 53: | Řádka 84: | ||
DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG); | DateFormat df = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG); | ||
... | ... | ||
− | |||
Řádka 62: | Řádka 92: | ||
* Popis formátu data viz [https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html Dokumentace třídy <code>SimpleDateFormat</code>] | * 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>: | * Konstruktor <code>SimpleDateFormat(String formát)</code>: | ||
* Formát zápisu data se píše jako textový řetězec složený z položek: | * Formát zápisu data se píše jako textový řetězec složený z položek: | ||
Řádka 72: | Řádka 102: | ||
*# ... | *# ... | ||
− | + | ; Příklady použití | |
String datumTextove = ...; | String datumTextove = ...; | ||
SimpleDateFormat df = new SimpleDateFormat("d. M. yyyy"); | SimpleDateFormat df = new SimpleDateFormat("d. M. yyyy"); | ||
Řádka 78: | Řádka 108: | ||
... | ... | ||
System.out.println(df.format(datum)); | System.out.println(df.format(datum)); | ||
− | |||
Řádka 91: | Řá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)