Я хочу получить дату отличающуюся на 10 дней от текущей. Получаю текущую дату с помощью
long date = cal.getTimeInMillis();
Собственно, она равна 1513854052451 (21-12-2017 по нашему). Затем вычитаю из текущей даты количество дней равное 86400000 * 10, но после отображения и форматирования с помощью SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); выводит почему то 31-12-1969 вместо 10-12-2017, ну никак не сходится.
public void add (View view)
{
long day = 86400000; //милис. в 1 дне
long date = cal.getTimeInMillis(); //получаем текущую дату
long a = Long.parseLong(remindDays.getText().toString()); // напр. в EditText введено 10
long b = day * a; //кол-во дней в милис.
long c = date - b; // сдвинутая дата
db.add(add_date);
}
я закидываю дату в БД в виде числа, а уже оттуда в TextView результат вывожу и там же форматирую строку, то есть по сути ошибка где то в коде выше.
Пробовал вручную пошагово задавать конкретные цифры для теста:
String a = "1513854052451"; // текущая дата
String b = "1513767652451"; //текущая дата - 1 день (86400000)
String c = sdf.format(Long.parseLong(String.valueOf(b)));
tv.setText(c);
В этом варианте все работает, почему же в 1 случае не работает никак не могу понять, логика то такая же.
Вы где-то ошиблись при переводе. Вообще, рекомендую взять на вооружение удобную утилиту java.util.concurrent.TimeUnit, которая позволяет переводит время из одних единиц измерения в другие.
String remindDays = "10";
Calendar calendar = Calendar.getInstance();
long daysInMilist = TimeUnit.DAYS.toMillis(Long.parseLong(remindDays));
long now = calendar.getTimeInMillis();
long past = now - daysInMilist;
String formatted = new SimpleDateFormat().format(new Date(past));
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники