2015-02-25 3 views
0

Я искал ответ в Интернете, но никто не отвечает точно, что я хочу. Скажем, у меня миллисекунд от эпохи, System.getCurrentMillis(). Мне нужно знать час дня упомянутых миллисов, только час, от 00 до 24, в идеале не как строку, а как int.Как я могу получить час дня с миллисекунды в Android

Есть ли простой способ достичь этого. В настоящее время я использую SimpleDateFormat("HH"), чтобы получить строку с dateFormat, но я уверен, что должна быть лучшая практика.

Спасибо заранее

+2

первое использование Calendar.setTimeInMillis, затем получите любое поле, которое вы хотите – pskink

ответ

9
Calendar time = Calendar.getInstance(); 
time.setTimeInMillis(milliseconds); 
time.get(Calendar.HOUR_OF_DAY) 
0

Другим рабочим решением для тех, кто не хочет использовать календарь конструктор. Внимание: это работает только для смещения часового пояса = 0!

//extracts Hour Of Day from Calendar milliseconds (TimeZone = 0) 
public static int extractHourOfDayFromMS(long ms) { 
    int millis = (int) (ms % 86400000); 

    if (millis < 0) { 
     millis += 86400000; 
    } 
    while (millis < 0) { 
     millis += 86400000; 
    } 
    while (millis >= 86400000) { 
     millis -= 86400000; 
    } 
    millis /= (1000*60*60); 
    return millis % 24; 
} 

Этот код был адаптирован из GregorianCalendar.fullFieldsCalc() функции.

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