Datum a čas v Javě

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
m (Opraveno formátování)
(Upraveno - použití LocaDate)
 
(Nejsou zobrazeny 4 mezilehlé verze 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 22: Řá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>.
* Má potomka <code>SimpleDateFormat</code>
+
** umožňuje nadefinovat vlastní nastavení
+
** nemusí se řídit aktuálním národním nastavením Javy
+
  
=== Metody ===
+
; Vytvoření instance
 +
* <code>DateFormat DateFormat.getDateInstance()</code>
 +
** 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í
+
** 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.
  
; Převody na text <-> datum
+
; Převody na text &harr; datum
 
* <code>Date dateFormat.parse(String s)</code>
 
* <code>Date dateFormat.parse(String s)</code>
** převod textu na datum
+
** 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.
+
** 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 = ...;
 +
df = DateFormat.getDateInstance();
 +
Date datum = df.parse(datumTextove);
 +
...
 +
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 &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));
  
  
Řádka 54: Řádka 120:
 
* prakticky pouze <code>GregorianCalendar</code> &mdash; gregoriánský kalendář.
 
* prakticky pouze <code>GregorianCalendar</code> &mdash; gregoriánský kalendář.
  
=== Metody ===
+
; 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