2016-12-14 2 views
2

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

Я пытаюсь сделать это с помощью:

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

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

Спасибо!

Update

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

ответ

2

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

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

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);; 
    } 

Выход: - как этот <code>Wed, 14 Dec 2016</code>

Примечание: - EEE это представляют в день в неделю, MMM будет представлять, как месяц в словах и так далее ..

0

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

new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z").format(date); 
+0

использовать длинный вместо целого – gauss

3

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

Обновление

SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy"); 
sdf.format(new Date(1481709600)); 
0

Попробуйте этот метод, чтобы получить данные. Установите время в 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; 
} 
+0

@VLeonovs 1481709600 * 1000, тогда он дает правильную дату. Я уже упомянул вас setTimeInMillis. –

0

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

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; 
    } 
+0

@VLeonovs, какая временная метка вы проходите. ошибка, которую вы сделали, вы использовали значение «Integer» в качестве параметра, который должен быть «длинным» типом данных, который равен y, где вы получаете 1970 год как год, попробуйте код выше и верните, если вы получаете тот же результат – SaravInfern

0

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

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 ""; 
} 
0

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

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)}") 
Смежные вопросы