Получить только дату из метки времени

Это моя функция ниже, в которой я передаю метку времени, мне нужна только дата взамен от метки времени, а не часы и секунды. С приведенным ниже кодом я получаю-

private String toDate(long timestamp) {
        Date date = new Date (timestamp * 1000);
        return DateFormat.getInstance().format(date).toString();
}

это результат, который я получаю.

11/4/01 11:27 PM

но мне нужна только такая дата, как эта

2001-11-04

какие предложения?

3 ответов


вместо этого используйте SimpleDateFormat:

private String toDate(long timestamp) {
    Date date = new Date(timestamp * 1000);
    return new SimpleDateFormat("yyyy-MM-dd").format(date);
}

Обновлено: Java 8 решение:

private String toDate(long timestamp) {
    LocalDate date = Instant.ofEpochMilli(timestamp * 1000).atZone(ZoneId.systemDefault()).toLocalDate();
    return date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
}

вы можете использовать этот код:

защищенная метка времени метка времени = новая метка времени (календарь.getInstance ().getTimeInMillis());

защищенная строка today_Date=отметка времени.toString ().сплит(" ")[0];


Joda Времени

на Joda Времени библиотека предлагает LocalDate класс для представления значения только даты без какого-либо времени суток или часового пояса.

Часовой Пояс

определение даты требует часовой пояс. Момент сразу после полуночи в Париже означает дату, которая на день опережает тот же самый момент в Монреале. Если не указать часовой пояс, применяется текущий часовой пояс JVM по умолчанию - вероятно, не то, что вы хотите, поскольку результаты могут отличаться.

Пример Кода

long millisecondsSinceUnixEpoch = ( yourNumberOfSecondsSinceUnixEpoch * 1000 ); // Convert seconds to milliseconds.
DateTimeZone timeZone = DateTimeZone.forID( "America/Montreal" );
LocalDate localDate = new LocalDate( millisecondsSinceUnixEpoch, timeZone );
String output = localDate.toString(); // Defaults to ISO 8601 standard format, YYYY-MM-DD.

Накануне

чтобы получить за день до этого, как указано в комментарии.

LocalDate dayBefore = localDate.minusDays( 1 );

преобразовать в j.u.Дата

java.утиль.Дата. & Календарь классов следует избегать как они, как известно, хлопотно. Но при необходимости вы можете обратиться.

java.util.Date date = localDate.toDate(); // Time-of-day set to earliest valid for that date.