2013-05-13 11 views
55

sto cercando di salvare il mio file con nome come data e ora correnti in millisecondi. e durante la lettura di file che voglio leggere più recente one.Here è il codiceCome ottenere l'ora corrente in millisecondi in Android

Calendar rightNow = Calendar.getInstance(); 

    long offset = rightNow.get(Calendar.ZONE_OFFSET) + rightNow.get(Calendar.DST_OFFSET); 

    String sinceMidnight = Long.toString((rightNow.getTimeInMillis() + offset) % (24 * 60 * 60 * 1000)); 

    return sinceMidnight+"_"+Filename; 
+0

buona. Ma qual è il problema? –

+0

@PankajKumar come leggere l'ultimo – Supreet

+1

@ Supreet- System.currentTimeMillis(); -Ritorna l'ora corrente del sistema in millisecondi – TheFlash

risposta

19

Il problema è che System. currentTimeMillis(); restituisce il numero di millisecondi da 1970-01-01T00: 00: 00Z, ma new Date() dà l'ora locale corrente . Aggiungendo il ZONE_OFFSET e DST_OFFSET dalla classe Calendar si ottiene l'ora in UTC.

Calendar rightNow = Calendar.getInstance(); 

// offset to add since we're not UTC 

long offset = rightNow.get(Calendar.ZONE_OFFSET) + 
    rightNow.get(Calendar.DST_OFFSET); 

long sinceMidnight = (rightNow.getTimeInMillis() + offset) % 
    (24 * 60 * 60 * 1000); 

System.out.println(sinceMidnight + " milliseconds since midnight"); 
+1

come differisce questa risposta da OP? –

+0

@sunil kumar rightNow.getTimeInMillis() restituirà l'ora locale in Milli Seconds, quindi credo che l'offset verrà sottratto da rightNow.getTimeInMillis() altrimenti non funzionerà con fusi orari (GMT + N). long thanMidnight = (rightNow.getTimeInMillis() + offset)% (24 * 60 * 60 * 1000); – muak

0

provare questo

Calendar c = Calendar.getInstance(); 
    int mseconds = c.get(Calendar.MILLISECOND) 

alternativa sarebbe

Calendar rightNow = Calendar.getInstance(); 

long offset = rightNow.get(Calendar.ZONE_OFFSET) + 
     rightNow.get(Calendar.DST_OFFSET); 
long sinceMid = (rightNow.getTimeInMils() + offset) % 
     (24 * 60 * 60 * 1000); 

    System.out.println(sinceMid + " milliseconds since midnight"); 
+0

vedere questo riferimento può essere d'aiuto http://developer.android.com/reference/android/os/SystemClock.html#setCurrentTimeMillis%28long%29 –

-1
Calendar calendar = Calendar.getInstance(); 
calendar.setTime(new Date()); 
int mSec = calendar.get(Calendar.MILLISECOND); 
195

Penso che si possa utilizzare questo

long time= System.currentTimeMillis(); 

questo restituirà l'ora corrente in modalità millisecondi. questo sarà sicuramente funzionerà

long time= System.currentTimeMillis(); 
android.util.Log.i("Time Class ", " Time value in millisecinds "+time); 

Ecco il mio logcat utilizzando la funzione

05-13 14:38:03.149: INFO/Time Class(301): Time value in millisecinds 1368436083157 

sopra Se hai qualche dubbio con il valore di millisecondo .Verificare Here

EDIT: Time Zone ho usato per demo il codice IST (+05: 30), quindi se si controlla milliseconds quello menzionato nel codice per corrispondere con l'ora nel registro da un altro fuso orario specificare IST Zona.

EDIT: Questo è l'approccio semplice Ma se avete bisogno di fuso orario o altri dettagli credo che questo non sarà sufficiente Also See this approach using android api support

Problemi correlati