Почему дата высчитывается некорректно?

159
22 декабря 2017, 01:18

Я хочу получить дату отличающуюся на 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 случае не работает никак не могу понять, логика то такая же.

Answer 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));
READ ALSO
Hibernate запрос из базы данных с помощью Criteria

Hibernate запрос из базы данных с помощью Criteria

Есть 3 таблицы в базе данных MySqlВот их классы

177
Как восстановить BufferedImage после свернутого окна?

Как восстановить BufferedImage после свернутого окна?

Используя таймер рисую в BufferedImageВ этом же цикле таймера вывожу изображение на панель

185
Не могу обойти шаблон в поле ввода

Не могу обойти шаблон в поле ввода

ПриветствуюЕсть форма для заполнения анкеты

227
Как повесить события кнопок, чтобы при нажатии они имитровали e.keyCode цифр и клавише bakspace?

Как повесить события кнопок, чтобы при нажатии они имитровали e.keyCode цифр и клавише bakspace?

Как повесить события кнопок, чтобы при нажатии они имитровали ekeyCode цифр и клавише bakspace? В моем случае позиция курсора при нажатии по кнопкам...

190