2013-05-13 3 views
55

Я пытаюсь сохранить мой файл с именем в качестве текущей даты и времени в миллисекундах. и при чтении файла я хочу прочитать последний one.Here является кодомКак получить текущее время в миллисекундах в 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

хорошо. Но что такое проблема? –

+0

@PankajKumar как читать последнюю версию – Supreet

+1

@ Supreet- System.currentTimeMillis(); -Отбрасывает текущее системное время в миллисекундах – TheFlash

ответ

19

Проблема заключается в том, что System. currentTimeMillis(); возвращает количество миллисекунд от 1970-01-01T00: 00: 00Z, но new Date() дает текущее местное время , Добавление ZONE_OFFSET и DST_OFFSET из класса Calendar дает время в 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

как этот ответ отличается от OP? –

+0

@sunil kumar rightNow.getTimeInMillis() вернет вам местное время в Milli Seconds, поэтому я считаю, что смещение будет вычтено из rightNow.getTimeInMillis() иначе это не будет работать для часовых поясов с (GMT + N). longMidnight = (rightNow.getTimeInMillis() + смещение)% (24 * 60 * 60 * 1000); – muak

0

попробовать это

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

альтернативой будет

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

см. Эту ссылку, это может помочь вам 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

Я думаю, что вы можете использовать этот

long time= System.currentTimeMillis(); 

это вернет текущее время в миллисекундах. это, безусловно, работать

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

Вот мой LogCat с помощью описанной выше функции

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

Если есть какие-либо сомнения, со значением миллисекунды .Проверить Here

EDIT: Time Zone Раньше я demo код IST (+05: 30), так что если вы проверите milliseconds, упомянутый в коде , чтобы соответствовать времени в журнале из другого часового пояса, укажите IST Зона.

EDIT: Это легкий подход .Но если вам нужен часовой пояс или любые другие детали, которые я думаю, что это не будет достаточно Also See this approach using android api support

Смежные вопросы