Вычисление разницы во времени дает неправильный результат

avatar
develop kotlin
8 апреля 2018 в 06:44
27
2
-1

Когда я сравниваю две даты вместе
Неправильно посчитал сумму дня!!!

    final String myDate = "08/22/2018 20:56:03";
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("mm/dd/yyyy HH:mm:ss");
    System.out.println("timeeeeeeeeeeeee" + "-" + simpleDateFormat);
    Date date = null;
    try {
        date = simpleDateFormat.parse(myDate);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    long endtime = date.getTime();
    Date d = null;
    try {
        d = simpleDateFormat.parse(simpleDateFormat.format(new Date(System.currentTimeMillis())));
    } catch (ParseException e2) {
        e2.printStackTrace();
    }
    Long ToCount = endtime -  d.getTime();

    CountDownTimer cdt = new CountDownTimer(ToCount, 1000) {
        public void onTick(long millisUntilFinished) {
            holder.timer.setText(""+ String.format(
                    " %d : %d : %d : %d ",
                    TimeUnit.MILLISECONDS.toDays(millisUntilFinished),
                    TimeUnit.MILLISECONDS.toHours(millisUntilFinished) -
                            TimeUnit.DAYS.toHours(TimeUnit.MILLISECONDS.toDays(millisUntilFinished)),
                    TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) -
                            TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millisUntilFinished)),
                    TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) -
                            TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))
            ));
        }
        public void onFinish() {
            // TODO Auto-generated method stub
            holder.timer.setText("done");
        }
    }.start();

Я точно не знаю, что это за ошибка Теперь рассчитывается сумма неправильного дня

Источник

Ответы (2)

avatar
c-an
8 апреля 2018 в 06:49
0

mm и MM отличаются.

MM соответствует Month. mm для minute.

Итак, формат должен быть MM/dd/yyyy HH:mm:ss.

И я не знаю, как вы сравнили два значения.

Вы можете использовать метод equal(). Он сравнивает свою стоимость. == сравнивает свой адрес.

avatar
Muhammed Refaat
8 апреля 2018 в 07:10
0

Я полагаю, что ваша проблема заключается в том, что вы указываете неправильный формат даты для анализа по сравнению с датой, которую вы предоставляете, для анализа даты, подобной вашей "08/22/2018 20:56:03", я считаю, что следующий формат будет правильным:

public static final String STORY_DATE_FORMAT = "MM/dd/yyyy HH:mm:ss";

Итак, полное решение будет таким:

final String myDate = "08/22/2018 20:56:03";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(STORY_DATE_FORMAT, Locale.ENGLISH);
Date currentDate = new Date();
Date updatedTimeParsed = simpleDateFormat.parse(myDate);
Date currentDateParsed = simpleDateFormat.parse(simpleDateFormat.format(currentDate));
// get the differences in dates
long different = currentDateParsed.getTime() - updatedTimeParsed.getTime();