2012-10-15 17 views
9

Ho una classe che utilizza la classe java.util.Date per creare un oggetto data e utilizzando getTime() per ottenere i millisecondi correnti.new Date(). GetTime() non restituisce timestamp in millisecondi

Ho visto nella documentazione Java che getTime() restituisce i millisecondi e lo stesso caso si trova sulla mia macchina.

Ho un altro server, quando distribuisco la mia applicazione sul server, lo stesso getTime() restituisce il timestamp in secondi.

ad es.

  • valore sul server: 1350054625
  • valore locale: 1350054625000

Mi chiedo come ciò sia possibile, ho provato lo stesso codice a livello locale e di nuovo mi sono timestamp in millisecondi.

Di seguito è la parte di codice di ...

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

quello del server che si sta utilizzando? – Abubakkar

+1

Come si ottiene il valore dal server? – strmstn

+3

Date è un wrapper per il valore ottenuto da 'System.currentTimeMillis();' puoi provare a utilizzarlo? –

risposta

7

'new Date()' a sua volta utilizza System.currentTimeMillis()

System.currentTimeMillis

Consegne l'ora corrente in millisecondi. Si noti che mentre l'unità di tempo del valore restituito è un millisecondo, la granularità del valore dipende dal sistema operativo sottostante e potrebbe essere maggiore. Ad esempio, molti sistemi operativi misurano il tempo in unità di decine di millisecondi.

Vedere la descrizione della classe Data per una discussione sulle lievi discrepanze dello tra "ora del computer" e ora universale coordinata (UTC).

fonte: http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/System.html#currentTimeMillis()

+5

Questo non spiega esattamente perché lo stesso codice restituirebbe risultati diversi se eseguito su macchine diverse, vero? – Ewald

+1

Sì, questo non risponde alla domanda. Ma ho pensato che questa informazione avrebbe aiutato a trovare il problema. Es: "Alcuni sistemi operativi misurano il tempo in unità di decine di millisecondi." L'unità di misura del tempo come sistema operativo nel server può essere seconda. – Munesh

+1

È vero, ma Java dovrebbe restituirlo nello stesso formato, ma i millisecondi sono impostati su "0". Capisco perché hai inserito le informazioni, stavo solo controllando per vedere se mi manca qualcosa :) – Ewald