IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Datum a čas v Javě pomocí třídy Calendar

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Petr.M
Člen
Avatar
Petr.M:25.4.2015 2:24

Navazuju na dotaz Matěje Kripnera - jaký je smysl ukládání objektu podtřídy SimpleDateFormat do reference typu jeho abstraktního předka DateFormat?

DateFormat formatData = new SimpleDateFormat("d.MMMM yyyy H:mm");

Chápu, že to dědičnost umožnuje, ale plynou z toho v tomto případě nějaké výhody pro další práci s tímto objektem? Odpověď na Matějův dotaz, že až bude umět víc OOP, tak to pochopí, se mi jeví lehce nedostačující :)
A jak bylo zmíněno, v textu lekce by bylo potřeba doplnit informaci, že je potřeba naimportovat také java.text.Date­Format, když už se používá reference tohoto typu.

Editováno 25.4.2015 2:26
Odpovědět
25.4.2015 2:24
Sometimes you just do things. - Scott Jurek
Avatar
Marcel Smolik:11.7.2015 1:00

Jsem zmaten mam se ucit celendr nebo API abych to nečet zbytečně.

 
Odpovědět
11.7.2015 1:00
Avatar
Odpovídá na Marcel Smolik
Marcel Smolik:11.7.2015 1:02

Pardon oprava mam číst tento článek nebo ten nový se zaměřením na datum a čas.

 
Odpovědět
11.7.2015 1:02
Avatar
secretcode
Člen
Avatar
secretcode:3.3.2016 16:09

Chyba v riadku

formatData = new SimpleDateFormat("d.M.yyyy H:mm");

Chyba tam typ deklaracie premennej formatData

SimpleDateFormat formatData = new SimpleDateFormat("d.M.yyyy H:mm");
Editováno 3.3.2016 16:09
 
Odpovědět
3.3.2016 16:09
Avatar
Debrax
Člen
Avatar
Debrax:26.4.2016 12:17

Menší preklep v úvode
Název může Calendar může být poněkud matoucí...

..a pozerám, že chyba formatData.. už bola spomenutá :)

 
Odpovědět
26.4.2016 12:17
Avatar
Odpovídá na Jan Demel
Pavel Habžanský:27.5.2016 14:39

Naštěstí inteligentnější IDE jako IntelliJ (nevím, jak NetBeans) to sami naimportujou, jakmile se pokusíš vytvořit instanci třídy, ke které potřebuješ daný balíček :-)

Odpovědět
27.5.2016 14:39
Čím větší výzva, tím větší zkušenost
Avatar
Roman Duchoň:27.9.2016 16:55

No... ač mi fungují, zatím nerozumím příkazům try a catch. Takový složitě vypadají příkazy a oni neumí ošetřit, když zadám něco špatně? Mlčím. Třeba jen má neznalost.

A co to odčítá datumů (zde na stránkách schválně použit tento tvar)?
Zkusil jsem něco jako:

public int porovnej()    {
        ted.set(Calendar.MILLISECOND, 0);
        ted.set(Calendar.SECOND, 0);
        ted.set(Calendar.MINUTE, 0);
        ted.set(Calendar.HOUR_OF_DAY, 0);
        bude.set(Calendar.MILLISECOND, 0);
        bude.set(Calendar.SECOND, 0);
        bude.set(Calendar.MINUTE, 0);
        bude.set(Calendar.HOUR_OF_DAY, 0);
        long tedMili = ted.getTimeInMillis();
        long budeMili = bude.getTimeInMillis();
        long rozdilMili = budeMili - tedMili;
        long denMili = 86400000;
        int dnu = (int) (rozdilMili / denMili);
        return dnu;
}

Opravdu to nejde jednodušeji? A co když budu chtít zapojit měsíce? Roky? Hodiny? A abych se nedostal do záporných hodnot?
Možná je to zbytečný dotaz, jen mě to trochu zarazilo. Občas jsem se i divil, jak jde něco jednoduše. Něco, co si dokáže člověk normálně představit programovací jazyk dokázal vystihnout líp, ale tohle...

Odpovědět
27.9.2016 16:55
RD
Avatar
Atrament
Tvůrce
Avatar
Odpovídá na Roman Duchoň
Atrament:28.9.2016 11:07

Tento článek už není příliš aktuální, je to uvedeno přímo v úvodu článku. Od Javy 8 je k dispozici komplet nové API na práci s časem, na zjištění počtu dní mezi dvěma datumy se dá použít ChronoUnit

LocalDate ted = LocalDate.now();
LocalDate potom = LocalDate.of(2016, 11, 19);
ChronoUnit.DAYS.between(ted, potom);
 
Odpovědět
28.9.2016 11:07
Avatar
Odpovídá na Atrament
Roman Duchoň:29.9.2016 12:23

Úžasné! :) Dík.

Pozn. pro budoucí čtenáře:

import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

edit: Měl jsem si přečíst ten článek, na který se odkazuje na začátku.
Ono asi neplatí, že když se učím základy, neměl bych řešit novinky...

Editováno 29.9.2016 12:26
Odpovědět
29.9.2016 12:23
RD
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 39.