2012-03-09 16 views
14

Zostało mi zadane to pytanie:Jak usunąć milisekundy ze znacznika czasu?

Biorąc znacznik czasu jako długą wartość, napisz funkcję narzędzia w Javie, aby upuścić milisekundy. Na przykład, biorąc pod uwagę dane wejściowe 1274883865399 (rzeczywisty czas: 20100526T14: 24: 25.399Z) funkcja wróci 1274883865000 (rzeczywisty czas: 2010-05-26T14: 24: 25.000Z)

to zrobił:

import java.text.*; 
import java.util.*; 

public class ClearMilliSeconds { 
    public static void main(String[] args) { 

     long yourmilliseconds = 1274883865399L; 
     SimpleDateFormat sdf = new SimpleDateFormat("MMM dd,yyyy HH:mm"); 
     Calendar c = Calendar.getInstance(); 


     Date resultdate = new Date(yourmilliseconds); 
     c.set(Calendar.MILLISECOND, 0); 
     resultdate.setTime(c.getTimeInMillis()); 
     System.out.println(sdf.format(resultdate)); 
} 
} 

Ale to nie daje mi prawo rezultat

+0

Czekaj, ale * dlaczego * jest wartością zwracaną przez 'getTimeInMillis' ** nie ** mającą wpływ na metodę' Calendar.set (...) '? – Marco

Odpowiedz

26

Jeśli rozumiem poprawnie nie ma potrzeby korzystania Date/Kalendarz ...

long yourmilliseconds = 1274883865399L; 
long droppedMillis = 1000 * (yourmilliseconds/ 1000);  
System.out.println(droppedMillis); 

Albo ... jeśli chcesz mieć formatowania dat ...

Calendar c = Calendar.getInstance(); 
c.setTime(new Date(yourmilliseconds)); 
c.set(Calendar.MILLISECOND, 0); 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm.ss.SSS'Z'"); 
sdf.setTimeZone(TimeZone.getTimeZone("GMT")); 
System.out.println(sdf.format(c.getTime())); 

2010-05-26T14: 24.25.000Z

+0

Dzięki, ale muszę to wypisać jako: czas rzeczywisty: 2010-05-26T14: 24: 25.000Z –

+0

Zmień format daty na rrrr-MM-dd'T'HH: mm.ss.SSS'Z ' – Adam

+0

I "zaktualizowałem moją odpowiedź, aby uwzględnić poprawne formatowanie danych. – Adam

1

Gdyby sam problem był mój początkowy znacznik czasu przechowywany w sq i zrobił sq.setTime(1000*(long)Math.floor(sq.getTime()/ 1000));, który wykonuje zadanie. W moim przypadku sq to sql.Timestamp

Powiązane problemy