2013-05-13 17 views
55

Próbuję zapisać mój plik z nazwą jako bieżącą datą i godziną w milisekundach. i podczas czytania pliku chcę czytać najnowszy one.Here jest kodJak uzyskać bieżący czas w milisekundach w Androidzie

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

dobre. Ale co jest problemem? –

+0

@PankajKumar jak czytać najnowszą – Supreet

+1

@ Supreet-System.currentTimeMillis(); -Zwraca bieżący czas systemowy w milisekundach – TheFlash

Odpowiedz

19

Problemem jest to, że System. currentTimeMillis(); zwraca liczbę milisekund od 1970-01-01T00: 00: 00Z, ale new Date() daje bieżący czas lokalny . Dodanie ZONE_OFFSET i DST_OFFSET z klasy Kalendarz daje czas w 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

jak ta odpowiedź różni się od OP? –

+0

@sunil kumar rightNow.getTimeInMillis() zwróci ci czas lokalny w Milli Seconds, więc sądzę, że offset zostanie odjęty od rightNow.getTimeInMillis() inaczej to nie zadziała dla stref czasowych z (GMT + N). long sinceMidnight = (rightNow.getTimeInMillis() + offset)% (24 * 60 * 60 * 1000); – muak

0

spróbować

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

alternatywą byłoby

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

zobacz to odwołanie może pomóc 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

myślę, że można użyć tego

long time= System.currentTimeMillis(); 

to zwróci bieżący czas w trybie milisekundowym. Będzie to z pewnością praca

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

Tu jest moja logcat stosując powyższą funkcję

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

Jeśli masz jakiekolwiek wątpliwości o wartości milisekund .Sprawdzić Here

EDIT: Strefa czasowa Kiedyś pokaż kod IST (+05: 30), więc jeśli sprawdzisz milliseconds wymieniony w kodzie , aby dopasować go do czasu w logu z innej strefy czasowej podaj IST Strefa.

EDIT: Jest to proste podejście .Ale jeśli trzeba strefę czasową lub jakiekolwiek inne dane Myślę, że to nie będzie wystarczająco Also See this approach using android api support

Powiązane problemy