2013-05-13 13 views
55

Ich versuche, meine Datei mit Namen als aktuelles Datum und Uhrzeit in Millisekunden zu speichern. und beim Lesen der Datei möchte ich lesen neuestes one.Here der CodeWie bekomme ich die aktuelle Datumzeit in Millisekunden 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

gut sein. Aber was ist das Problem? –

+0

@PankajKumar wie man die neueste – Supreet

+1

@ Supreet-System.currentTimeMillis(); - Gibt die aktuelle Systemzeit in Millisekunden zurück – TheFlash

Antwort

19

Das Problem ist, dass System. currentTimeMillis(); gibt die Anzahl der Millisekunden von 1970-01-01T00: 00: 00Z, aber new Date() gibt die aktuelle lokale Zeit . Hinzufügen der ZONE_OFFSET und DST_OFFSET von der Kalender-Klasse gibt Ihnen die Zeit 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

wie unterscheidet sich diese antwort von OP? –

+0

@sunil kumar rightNow.getTimeInMillis() gibt Ihnen die lokale Zeit in Milli-Sekunden zurück, daher glaube ich, dass der Offset von rightNow.getTimeInMillis() subtrahiert wird, sonst funktioniert das nicht für Zeitzonen mit (GMT + N). long sideMidnight = (rightNow.getTimeInMillis() + Offset)% (24 * 60 * 60 * 1000); – muak

0

versuchen diese

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

eine Alternative wäre

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

siehe diese Referenz kann es Ihnen helfen 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

Ich denke, Ihnen diese

können
long time= System.currentTimeMillis(); 

Dies gibt die aktuelle Zeit im Millisekunden-Modus zurück. dies funktionieren wird sicherlich

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

Hier ist mein logcat

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

die obige Funktion Wenn Sie irgendeinen Zweifel mit Millisekundenwert .Kontrolle bekam Here

EDIT: Zeitzone I gewöhnungs Demo den Code IST (+05: 30), also, wenn Sie überprüfen, milliseconds, die in Code mit der Zeit im Log von anderen Zeitzone übereinstimmen, IST angeben Zone.

EDIT: Dieser einfache Ansatz ist .aber, wenn Sie die Zeitzone oder andere Details müssen ich denke, das wird nicht genug Also See this approach using android api support

Verwandte Themen