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)
