background image

java 
/data 

1

Data 

 
 
 

class java.util.Date 

 

• 

daty rozpoczynaj  si  od epoki UNIXowej tj. 1.01.1970 

 
Date d = new Date(); 
System.out.println(d); // == System.out.println(d.toString()); 
                     

 

 // Fri Apr 08 22:31:55 CEST 2005 

 
 
 
 

class java.util.Calendar 

 

• 

jest to klasa abstrakcyjna 

• 

metoda Calendar.getInstance() zwraca obiekt klasy potomnej 
odpowiadaj cy ustawieniom lokalnym czyli w Europie i 
Ameryce: GregorianCalendar 

 
System.out.println(Calendar.getInstance().getTime()); 
 

 

 

 

 

 

// Fri Apr 08 22:31:55 CEST 2005 

 
 

• 

samo Calendar.getInstance() odda wszystkie wewn trzne 
informacje o stanie klasy i nie jest u yteczne 

 

• 

cz sto u ywa si  potomka tej klasy: GregorianCalendar  

 
 
 
 

class java.text.DateFormat  

 

• 

klasa abstrakcyjna 

• 

pozwala wy wietla  dat  i czas w zadanym formacie 

 

• 

cz sto u ywa si  potomka tej klasy: SimpleDateFormat 

 
import java.util.Date; 
import java.text.DateFormat; 
 
Date d = new Date(); 
SimpleDateFormat f = new SimpleDateFormat ("E yyyy.MM.dd 
                                 'godz.' hh:mm:ss a zzz"); 
System.out.println("Po sformatowaniu: " + f.format(d)); 
 
     // Po sformatowaniu: Pt 2005.04.08 godz. 10:47:09 PM CEST 

background image

java 
/data 

2

 
 

symbol 

znaczenie 

sposób 

prezentacji 

przykład 

era 

tekst 

AD 

rok 

liczba 

2002 

miesi c 

tekst/liczba  luty / 02 

dzie  

liczba 

15 

godzina (12) 

liczba 

godzina (24) 

liczba 

18 

minuta 

liczba 

30 

sekunda 

liczba 

43 

milisekunda 

liczba 

234 

dzie  tygodnia 

tekst 

niedziela 

dzie  roku 

liczba 

324 

dzie  tygodnia w 
miesi cu 

liczba 

3 (trzecia niedziela 
wrze nia) 

tydzie  roku 

liczba 

37 

tydzie  miesi ca 

liczba 

oznaczenie 
A.M./P.M. 

tekst 

PM 

godzina dnia (1-
24) 

liczba 

12 

godzina dnia w 
form. 12g (0-11) 

liczba 

strefa czasowa 

tekst 

Central European 
Summer Time 

‘ 

oznaczenie tekstu  ogranicznik   

‘’ 

pojedynczy znak 
apostrofu 

litera 

 

 
 
je li w tabeli jest „tekst”: 
podanie 4 lub wi cej liter   pełna nazwa, 
podanie mniejszej liczby   skrót (je li istnieje) 
np. E   Pn, EEEE   Poniedziałek 
 
 
je li w tabeli jest „liczba”: 
liczba powtórze  znaku   minimalna liczba wy wietlanych cyfr 
(je li liczba jest mniejsza to zera na pocz tku) 
np. yy   04, yyyy   2004 
 
 
je li w tabeli jest tekst/liczba: 
MM   09, MMM   wrz, MMMM   wrzesie  
 
 
 
 

background image

java 
/data 

3

 
 

• 

ustawianie konkretnej daty i czasu 

 
//1 
GregorianCalendar d1 = new GregorianCalendar(1986, 05, 05); 
                                                // 5 maja 1986 
GregorianCalendar d2= new GregorianCalendar(); // bie

ca data 

         Calendar d3= Calendar.getInstance(); // bie

ca data 

System.out.println("Wtedy był " + d1.getTime()); 
System.out.println("Teraz jest " + d2.getTime()); 
System.out.println("Teraz jest te  " + d3.getTime()); 
 
                    // Wtedy był Thu Jun 05 00:00:00 CEST 1986 
                   // Teraz jest Fri Apr 08 23:23:13 CEST 2005 
      

      // Teraz jest te  Fri Apr 08 23:23:13 CEST 2005 

 
 
//2      
d3.set(Calendar.YEAR, 1915); 
d3.set(Calendar.MONTH, Calendar.APRIL); 
d3.set(Calendar.DAY_OF_MONTH, 12); 
System.out.println("D3 przypisano dat  " + d3.getTime()); 
  

 

   // d3 przypisano dat  Mon Apr 12 23:28:45 CET 1915 

 
 
 
 

• 

zamiana ła cucha znaków na dat  

 
public static void main(String[] args) { 
 SimpleDateFormat f = new SimpleDateFormat ("yyyy-MM-dd"); 
 String in = args.length == 0 ? "1818-11-11" : args[0]; 
 System.out.print("Ła cuch "+in+" został przetworzony na "); 
   Date t; 
    try {  t = f.parse(in); 
           System.out.println(t); } 
    catch (ParseException e) { 
    System.out.println("Nie da si  prztworzy  danych w oparciu 
o format: " + f); 
                  // Ła cuch 1818-11-11 został przetworzony na 
                  // Wed Nov 11 00:00:00 CET 1818 
 
 
 
 
 
 
 
 
 

background image

java 
/data 

4

 

• 

zamiana ła cucha znaków na dat  – data stanowi tylko cz

 

ła cucha   u y  substring() 

 
SimpleDateFormat f = new SimpleDateFormat ("yyyy-MM-dd"); 
String in[] = { "ur. 1913-10-01 Vancouver, B.C.", 
                "zm. 1948-03-01 Ottawa, ON"}; 
 
 for (int i=0; i<in.length; i++) { 
   String aLine = in[i]; 
   String action; 
 
 switch(aLine.charAt(0)) { 
       case 'u': action = "Data urodzenia"; break; 
       case 'z': action = "Data  mierci"; break; 
 default: System.err.println("Bł dy kod w wierszu: " + aLine); 
                continue; 
                         } 
 
 int p = aLine.indexOf(' ');          //znajdzie odstep po . 
 ParsePosition pp = new ParsePosition(p); 
                 //ta klasa słu y do sledzenia miejsca kursora 
 
 Date d = f.parse(aLine, pp);          //skonwertuje date 
            if (d == null) { 
  System.err.println("Niepoprawna data w wierszu " + aLine); 
              continue;    } 
 
  String location = aLine.

substring(pp.getIndex()); 

                  //pobierze nazwe miasta, ktora jest po dacie 
 
 System.out.println(action + " " + d + " w " + location); } 
 
              // Data urodzenia Wed Oct 01 00:00:00 CET 1913 w 
              // Vancouver, B.C. 
 
              // Data  mierci Mon Mar 01 00:00:00 CET 1948 w 
              // Ottawa, ON 
 
 
 

• 

milisekundy na daty 

 
long now = System.currentTimeMillis(); 
System.out.println("Przetwarzamy " + Long.toHexString(now) + " 
       --> " + new java.util.Date(now)); 
 
// Przetwarzamy 10328d82837 --> Sat Apr 09 23:23:04 CEST 2005 
 
 
 

background image

java 
/data 

5

• 

odejmowanie/dodawanie dat 

 
//1  
Date now = new Date(); 
long t = now.getTime(); 
t -= 700*24*60*60*1000; 
Date then = new Date(t); 
System.out.println("Siedemset dni temu był: " + then); 
 
  

  // Siedemset dni temu był: Tue Apr 05 22:21:30 CEST 2005 

 
 
//2 
Calendar now = Calendar.getInstance(); 
SimpleDateFormat f = new SimpleDateFormat ("E yyyy.MM.dd 
'godz.' hh:mm:ss a zzz"); 
System.out.println("Dzi  jest " + f.format(now.getTime())); 
  

 

    // Dzi  jest So 2005.04.09 godz. 11:45:36 PM CEST 

 
now.add(Calendar.DAY_OF_YEAR, - (365 * 2)); 
System.out.println("Ponad dwa lata temu był: " + 
f.format(now.getTime())); 
  

 

 

 

    // Ponad dwa lata temu był: 

   

 

 

 

    // Cz 2003.04.10 godz. 11:45:36 PM CEST 

 
 
//3   odst p od roku 2000 
 
Date d1 = new GregorianCalendar(1999,11,31,23,59).getTime(); 
  

 

 

 

 

 

 

 

    //poczatek roku2000 

Date d2 = new Date();                      //data dzisiejsza 
     // wyra amy ka d  z dat w formie milisekund i odejmujemy 
 
long diff = d1.getTime() - d2.getTime(); 
System.out.println("Ró nica wynosi " + (diff / 
   (1000*60*60*24)) + " dni."); 
  

 

 

 

 

 

 

// Ró nica wynosi -1925 dni. 

 
 

• 

porównywanie dat 

 
DateFormat df = new SimpleDateFormat ("yyyy-MM-dd"); 
 Date d1 = df.parse(“2004-10-14”); 
 Date d2 = df.parse(“2003-04-05”); 
   String relation; 
        if (d1.equals(d2))  relation = "to ta sama data co"; 
        else if (d1.before(d2)) relation = "wypada przed"; 
        else relation = "wypada po"; 
   System.out.println(d1 + " " + relation + " " + d2); 
  

 

 

 

// Thu Oct 14 00:00:00 CEST 2004 wypada po 

  

 

 

 

// Sat Apr 05 00:00:00 CEST 2003 

background image

java 
/data 

6

 

• 

okre lenie numeru dnia itp. wyznaczonego przez dat  

 
stałe z klasy 

java.util.Calendar, które mo na u y : 

ERA, YEAR, MONTH, WEEK_OF_YEAR, WEEK_OF_MONTH, DATE, 
DAY_OF_MONTH, DAY_OF_YEAR, DAY_OF_WEEK, DAY_OF_WEEK_IN_MONTH, 
AM_PM, HOUR, HOUR_OF_DAY, MINUTE, SECOND, MILLISECOND, 
ZONE_OFFSET, DST_OFFSET (przesuni cie czasu letniego i 
zimowego) 
 
 
 Calendar c = new GregorianCalendar(); 
 Date timeNow = new Date(); 
 c.setTime(timeNow);    // ustawiamy dat  i czas w kalendarzu 
 System.out.println("bie

cy tydzie  roku: " + 

  

 

 c.get(Calendar.WEEK_OF_YEAR));       

 
  

 

 

 

// bie

cy tydzie  roku: 14