2012-10-15 24 views
9

Mam klasę, która używa klasy java.util.Date do utworzenia obiektu daty i użycia getTime(), aby uzyskać bieżące milisekundy.nowa data(). GetTime() nie zwraca znacznika czasu w milisekundach

Widziałem w dokumentacji Java, że ​​getTime() zwraca milisekund, a ten sam przypadek jest na moim komputerze.

Mam jeden inny serwer, gdy wdrażam moją aplikację na serwerze, ten sam getTime() zwraca znacznik czasu w kilka sekund.

np.

  • wartość na serwerze: 1350054625
  • wartość na lokalny: 1350054625000

Zastanawiam się jak to jest możliwe, próbowałem ten sam kod lokalnie i znowu mam znacznik czasu w milisekundach.

Poniżej jest częścią kodu ...

String longTime = new Long((new Date().getTime())).toString(); 
if(log.isDebugEnabled())log.debug("LAST_FEED_TIME will be " + longTime + " stored."); 
+0

co serwer używasz? – Abubakkar

+1

W jaki sposób otrzymujesz wartość z serwera? – strmstn

+3

Data jest opakowaniem dla wartości uzyskanej z 'System.currentTimeMillis();' czy możesz spróbować użyć tego zamiast? –

Odpowiedz

7

'new Date()' z kolei wykorzystuje System.currentTimeMillis()

System.currentTimeMillis

Zwroty aktualny czas w milisekundach. Należy zauważyć, że podczas gdy jednostka czasu zwrotu wartości to milisekunda, ziarnistość wartości zależy od podstawowego systemu operacyjnego i może być większa. Na przykład wiele systemów operacyjnych mierzy czas w jednostkach dziesiątek milisekund.

Zobacz opis klasy Data dyskusji o niewielkich różnicach między czasem komputera a skoordynowanym czasem uniwersalnym (UTC).

źródło: http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/System.html#currentTimeMillis()

+5

To nie wyjaśnia, dlaczego ten sam kod zwróciłby różne wyniki, gdy działałby na różnych komputerach, prawda? – Ewald

+1

Tak, to nie odpowiada na pytanie. Ale myślałem, że ta informacja pomoże w znalezieniu problemu. Przykład: "Niektóre systemy operacyjne mierzą czas w jednostkach dziesiątek milisekund." Jednostka miary czasu według systemu operacyjnego na serwerze może być druga. – Munesh

+1

To prawda - ale wtedy Java powinna zwrócić ją w tym samym formacie, ale milisekundy ustawiono na "0". Rozumiem, dlaczego umieściłeś informacje, właśnie sprawdzałem, czy czegoś brakuje :) – Ewald