2013-12-18 8 views
0

Im пытается конвертировать временную метку в удобную для человека дату и время. Я пробовал:Конвертировать unix/epoch time в отформатированную дату - неожиданную дату

String dateSt = 1386580621268; 
Log.i("*****", "date st is = "+dateSt); 
long unixSeconds = Long.parseLong(dateSt); 
Log.i("*******", "unix seconds is = "+unixSeconds); 
Date date = new Date(unixSeconds*1000L); // *1000 is to convert seconds to milliseconds 
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); // the format of your date 
String formattedDate = sdf.format(date); 
System.out.println(formattedDate); 

Ожидаемый результат должен быть 09-12-2013, однако я получить 28-12-45908. Выше пример можно найти по адресу: Convert Unix timestamp to date java, answer by David Hofmann

ответ

2

1386580621268 не является Отметка времени Unix т.е. секунд с момента для 9-12-2013, но миллисекунд после эпохи. Удалите *1000L или разделите вход на 1000.

+0

А, я вижу, большое спасибо за очистку этого. Теперь он работает правильно :) Я просто удалил '* 1000L', как вы предлагали. Еще раз спасибо. – DevC

10

Попробуйте это,

public static String Epoch2DateString(long epochSeconds, String formatString) { 
    Date updatedate = new Date(epochSeconds * 1000); 
    SimpleDateFormat format = new SimpleDateFormat(formatString); 
    return format.format(updatedate); 
} 
Смежные вопросы