Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Date: interval vremena

[es] :: Java :: Date: interval vremena

[ Pregleda: 2916 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Andreja Dulovic

Član broj: 14570
Poruke: 246
212.200.218.*



+5 Profil

icon Date: interval vremena27.05.2007. u 22:42 - pre 205 meseci
problem:
imam dva "timestampa", i treba mi interval vremena izmedju njih.
vremena su u string formatu. prebacim ih u instance Date klase, zatim svako od ta dva vremena predstavim kao Long broj (broj milisekundi od 01/01/1970) i oduzmem manji od veceg. tako dobijen long (razliku dva vremena) zelim da predstavim kao novu instancu Date-a. medjutim, ne dobijam validan rezultat.

Code:
        String d1 = "05/23/2007 13:01:06.616";
        String d2 = "05/23/2007 13:05:21.837";
        String dateFormat1 = "MM/dd/yyyy HH:mm:ss.SSS";
        String dateFormat2 = "HH:mm:ss.SSS";
        
        SimpleDateFormat df = new SimpleDateFormat(dateFormat1);

        try {
            Date date1 = df.parse(d1);
            Date date2 = df.parse(d2);

            pt("date1: "+df.format(date1)+" (long: "+date1.getTime()+")");
            pt("date2: "+df.format(date2)+" (long: "+date1.getTime()+")");
            
            long dd = date2.getTime() - date1.getTime();
            
            Date date3 = new Date(dd);
            df = new SimpleDateFormat(dateFormat2);
            pt("date3: "+df.format(date3)+" (long: "+date3.getTime()+")");
            
            
        } catch (ParseException exc) {
            // TODO Auto-generated catch block
            exc.printStackTrace();
        }


kao rezultat izvrsavanja ovog koda dobija se:

Code:
date1: 05/23/2007 13:01:06.616 (long: 1179918066616)
date2: 05/23/2007 13:05:21.837 (long: 1179918066616)
date3: 01:04:15.221 (long: 255221)



dakle, razlika ova dva vremena bi trebalo da bude: 00:04:15.221 a ne: 01:04:15.221 kao sto je ispisano.

odakle se stvorio ovaj jedan sat viska?
 
Odgovor na temu

tiranin
Dorćol

Član broj: 37185
Poruke: 245
*.static.sbb.co.yu.



Profil

icon Re: Date: interval vremena28.05.2007. u 08:25 - pre 205 meseci
Mozda kroz letnje racunanje vremena jer 1970 nije postojalo letnje i zimsko vreme :)

BTW. nisi dobro ispisao one dve long vrednosti
 
Odgovor na temu

hyle
Perica Milošević
Belgrade

Član broj: 30030
Poruke: 150
82.117.206.*

Sajt: www.linkedin.com/in/peric..


+4 Profil

icon Re: Date: interval vremena28.05.2007. u 08:25 - pre 205 meseci
Vreme izraženo kao long je apsolutno vreme i predstavlja broj milisekundi od 1. januara 1970. UTC. UTC (coordinated universal time) odgovara vremenskoj zoni Griniča i razlika u odnosu na našu vremensku zonu je 1 sat.

Računica kojom dobijaš razliku između dva datuma je tačna, greška nastaje u trenutku kada prikazuješ dobijenu razliku jer ti se rezultat prikazuje u našoj vremenskoj zoni koja dodaje 1 sat.

Ozbiljnije baratanje vremenom i datumima u Javi zna da bude baš nezgodno. Opšta preporuka za manipulaciju vremenom je "Joda Time" biblioteka koja između ostalog ima i ovo što tebi treba, operacija sa vremenskim intervalima.
http://joda-time.sourceforge.net/
 
Odgovor na temu

Andreja Dulovic

Član broj: 14570
Poruke: 246
*.adsl-1.sezampro.yu.



+5 Profil

icon Re: Date: interval vremena28.05.2007. u 11:15 - pre 205 meseci
Citat:
tiranin: BTW. nisi dobro ispisao one dve long vrednosti

u pravu si. pogresno sam paste-ovao u poruku.



Citat:
hyle: Računica kojom dobijaš razliku između dva datuma je tačna, greška nastaje u trenutku kada prikazuješ dobijenu razliku jer ti se rezultat prikazuje u našoj vremenskoj zoni koja dodaje 1 sat.

hvala na pomoci - to je to!

inace, sad sam bacio pogled na joda time i deluje mi odlicno.
 
Odgovor na temu

[es] :: Java :: Date: interval vremena

[ Pregleda: 2916 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.