От метки времени до даты Android

Добрый день, у меня есть временная метка 1481709600, и я хотел бы иметь этот формат времени Wed, 14 Dec 2016

Я пытаюсь сделать это, используя:

private String getDateFromTimeStamp(Integer dt) {
            Date date = new Date (dt);
            return new SimpleDateFormat("EEE MMM dd hh:mm:ss yyyy ").format(date);
}

но текущий вывод Sun Jan 18 05:35:09 GMT+02:00 1970

Я думаю, что формат даты неверен, какой мне нужно использовать?

Благодарю вас!

Обновить

проблема в том, что год, день и месяц неверны, должно быть 14 декабря 2016 года вместо 18 января 1970 года.


person VLeonovs    schedule 14.12.2016    source источник


Ответы (7)


Проблема в том, что ваша временная метка указана в секундах, поэтому преобразуйте временную метку в миллисекунды, а затем используйте функцию формата даты...

Попробуй это ...

ЯВА

 private String getDate(long time) {
        Date date = new Date(time*1000L); // *1000 is to convert seconds to milliseconds
        SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy "); // the format of your date
        sdf.setTimeZone(TimeZone.getTimeZone("GMT-4"));
    
        return sdf.format(date);;
    }

Котлин

fun getDate(time:Long):String {
            var date:Date = Date(time*1000L); // *1000 is to convert seconds to milliseconds
            var sdf:SimpleDateFormat  = SimpleDateFormat("EEE, dd MMM yyyy "); // the format of your date
            sdf.setTimeZone(TimeZone.getTimeZone("GMT-4"));
    
        return sdf.format(date);
    }

Вывод: - вот так Среда, 14 декабря 2016 г.

Примечание. EEE обозначается как день в неделе, MMM обозначается словами как месяц и т. д.

person sushildlh    schedule 14.12.2016

Вы можете составить любую комбинацию, если прочитаете это
Вам нужно использовать EEE, d MMM yyyy

Обновить

SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy");
sdf.format(new Date(1481709600));
person Salmaan    schedule 14.12.2016

формат даты неверен; вы должны использовать

 new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z").format(date);
person gauss    schedule 14.12.2016
comment
используйте long вместо integer - person gauss; 14.12.2016

попробуй это

private String getDateFromTimeStamp(long time) {
        Calendar cal = Calendar.getInstance(Locale.ENGLISH);
        cal.setTimeInMillis(time);
        String date = DateFormat.format("EEE MMM dd hh:mm:ss yyyy ", cal).toString();
        return date;
    }
person SaravInfern    schedule 14.12.2016
comment
@VLeonovs, какую отметку времени вы передаете. ошибка, которую вы сделали, заключается в том, что вы использовали значение Integer в качестве параметра, который должен быть типом данных long, то есть вы получаете 1970 год как год, попробуйте код выше и вернитесь, если вы получаете тот же результат - person SaravInfern; 14.12.2016

Попробуйте этот метод для получения данных. Поместите время в setTimeInMillis так долго, а не как int

private String getDate(long time) {
    Calendar cal = Calendar.getInstance(Locale.ENGLISH);
    cal.setTimeInMillis(time);
    String date = DateFormat.format("EEE MMM dd hh:mm:ss yyyy ", cal).toString();
    return date;
}
person Deepak Sachdeva    schedule 14.12.2016
comment
@VLeonovs 1481709600*1000, тогда вы получите правильную дату. Я уже упоминал, что вы setTimeInMillis. - person Deepak Sachdeva; 14.12.2016

Вы можете создать простой метод для получения даты из меток времени следующим образом.

public String getDateCurrentTimeZone(long timestamp) {
        try {
            Calendar calendar = Calendar.getInstance();
            TimeZone tz = TimeZone.getDefault();    calendar.setTimeInMillis(timestamp * 1000);
calendar.add(Calendar.MILLISECOND,
tz.getOffset(calendar.getTimeInMillis()));
            SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy");
Date currenTimeZone = (Date) calendar.getTime();
return sdf.format(currenTimeZone);
} catch (Exception e) {
}
return "";
}
person Naitik    schedule 14.12.2016

Это работает для меня:

val currentDay = Date()
    val day = currentDay.time
    Logger.i("currentDay = $currentDay and day : $day ")

    val c = Calendar.getInstance()
    c.timeInMillis = day
    val d = c.time
    val sdf = SimpleDateFormat("dd/MM/yyyy HH:mm")

    Logger.i("meDate : ${sdf.format(d)}")
person Gama_aide    schedule 19.11.2017