Datum a čas v Javě

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Rozpracováno: bude dokončeno)
 
(Upraveno - použití LocaDate)
 
(Není zobrazeno 5 mezilehlých verzí od 1 uživatele.)
Řádka 1: Řádka 1:
[[Category:VSE]]
+
[[Category:VSE]][[Category:Informatika]][[Category:Programování]][[Category:Java]]
[[Category:Informatika]]
+
[[Category:Programování]]
+
  
 +
== 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 11: Řádka 37:
  
 
=== Metody ===
 
=== Metody ===
    new Date()
+
* konstruktor <code>Date()</code>
        nastaví aktuální datum a čas
+
** vytvoří instanci reprezentující aktuální datum a čas
    boolean date.before(Date druhe)
+
        int  compareTo(Date anotherDate)
+
        boolean after(Date druhe)
+
  
 +
;Porovnání dvou dat (které datum je starší?)
 +
* <code>boolean before(Date druhe)</code>
 +
* <code>boolean after(Date druhe)</code>
 +
* <code>int compareTo(Date anotherDate)</code>
  
  
  
  
== Třída <code>java.text.DateFormat</code>
+
<!-- ==========================================================================
    Převod data na naformátovaný textový řetězec
+
== Starší třídy z předchozích verzí Javy: ==
        Zohledňuje aktuální národní nastavení.
+
        Časové zóny
+
        světové časy
+
    DateFormat DateFormat.getTimeInstance()
+
        získání s instance s místním nastavením zobrazení
+
    Date dateFormat.parse(String s)
+
    String dateFormat.format(Date date)
+
    Má potomka
+
        SimpleDateFormat
+
            umožňuje nadefinovat vlastní nastavení
+
            nemusí se řídit aktuálním národním nastavením (Locale)
+
  
  
 +
=== Třída <code>java.text.DateFormat</code> ===
  
 +
* 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>.
  
 +
; Vytvoření instance
 +
* <code>DateFormat DateFormat.getDateInstance()</code>
 +
** vytvoří instanci s místním nastavením zobrazení pro datum.
 +
* <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.
  
== Třída <code>java.util.Calendar</code>
+
; Převody na text &harr; datum
 +
* <code>Date dateFormat.parse(String s)</code>
 +
** Převod textového zápisu na datum.
 +
* <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.
  
=== Účel ===
+
; Příklady použití
* Analýza data na jednotlivé položky (rok, měsíc, den, hodina...).
+
DateFormat df;
* Výpočty s datem (posun o měsíc, o pět dnů,...).
+
String datumTextove = ...;
* Zamýšleny instance pro různé kalendářní systémy (<code>GregorianCalendar</code>), prakticky ale pouze gregoriánský kalendář.
+
df = DateFormat.getDateInstance();
 +
Date datum = df.parse(datumTextove);
 +
...
 +
System.out.println(df.format(datum));
  
=== Metody ===
+
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 &mdash; <code>"01"</code>).
 +
*# <code>M</code> ... Zápis měsíce (<code>MM</code> znamená zápis včetně úvodní nuly &mdash; <code>"01"</code>, <code>MMM</code> textový zápis &mdash; <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));
 +
 
 +
 
 +
 
 +
== Třída <code>java.util.Calendar</code> ==
 +
 
 +
; Slouží k:
 +
* analýze data na jednotlivé položky (rok, měsíc, den, hodina...)
 +
* výpočtům s datem (posun o měsíc, o pět dnů,...)
 +
; Abstraktní třída
 +
* rodič pro konkrétní třídy, reprezentující různé kalendářní systémy
 +
* prakticky pouze <code>GregorianCalendar</code> &mdash; 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

Třídy

Vytvoření instance

LocalDate.now();
LocalDate.of(year, month, day);
LocalDate.parse("2015-12-22");

Formátování, konverze

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d. M. yyyy");
LocalDate.parse("22. 12. 2015", formatter);
localDate.format(formatter)
localDate.atStartOfDay()
localDate.atStartOfDay(ZoneId.of( "America/Montreal" ) )
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());


Třída java.util.Date

Metody

Porovnání dvou dat (které datum je starší?)



Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje