Java 倒数计时器未正确显示时间

Java 倒数计时器未正确显示时间,java,android,date,calendar,countdown,Java,Android,Date,Calendar,Countdown,我正在为Android开发。我使用倒计时来显示某个日期的倒计时。在写这篇文章的时候,它应该显示一些接近18dys 12hrs 30min 55s的内容。但我得到的是49dys 19小时28分钟31秒。我相信我转换成可读的日期是正确的,但再说一次,我没有使用这个计时器的经验。我的研究使我陷入了困境。请看一下我的代码,并找出我可能有任何错误。提前谢谢 private void startCountdown() { CountDownTimer mCountDownTimer;

我正在为Android开发。我使用倒计时来显示某个日期的倒计时。在写这篇文章的时候,它应该显示一些接近18dys 12hrs 30min 55s的内容。但我得到的是
49dys 19小时28分钟31秒
。我相信我转换成可读的日期是正确的,但再说一次,我没有使用这个计时器的经验。我的研究使我陷入了困境。请看一下我的代码,并找出我可能有任何错误。提前谢谢

private void startCountdown() {
    CountDownTimer mCountDownTimer;
        Calendar cal1 = Calendar.getInstance();
        Calendar cal2 = Calendar.getInstance();
        cal2.set(Calendar.YEAR, 2013);
        cal2.set(Calendar.MONTH, 8);
        cal2.set(Calendar.DAY_OF_MONTH, 23);
        cal2.set(Calendar.HOUR_OF_DAY, 7);
        cal2.set(Calendar.MINUTE, 0);

    long diffInMillis = cal2.getTimeInMillis() - cal1.getTimeInMillis();



        tvCount = (TextView) findViewById(R.id.tvCountdown);

        mCountDownTimer = new CountDownTimer(diffInMillis, 1000) {


            @Override
            public void onFinish() {
                tvCount.setText("VIEW FIGHT CARD");

            }

            @Override
            public void onTick(long millisUntilFinished) {

                String  days = null, hours = null, minutes = null, seconds = null;
                long count = millisUntilFinished / DateUtils.DAY_IN_MILLIS;
                if(millisUntilFinished > DateUtils.DAY_IN_MILLIS) {

                    if(count > 1)
                        days = (count)+("dys ");
                    else
                        days = (count)+("dy ");

                    millisUntilFinished %= DateUtils.DAY_IN_MILLIS;
                }
                if(millisUntilFinished > DateUtils.HOUR_IN_MILLIS) {
                    count = millisUntilFinished / DateUtils.HOUR_IN_MILLIS;
                    if(count > 1)
                       hours = (count) + "hrs ";
                    else
                        hours = count + "hr ";

                    millisUntilFinished %= DateUtils.HOUR_IN_MILLIS;
                }
                if(millisUntilFinished > DateUtils.MINUTE_IN_MILLIS) {
                    count = millisUntilFinished / DateUtils.MINUTE_IN_MILLIS;

                    minutes = count + "min";

                    millisUntilFinished %= DateUtils.MINUTE_IN_MILLIS;
                }
                if(millisUntilFinished > DateUtils.SECOND_IN_MILLIS) {
                    count = millisUntilFinished / DateUtils.SECOND_IN_MILLIS;

                    seconds = count + "s";

                    millisUntilFinished %= DateUtils.SECOND_IN_MILLIS;
                }



                tvCount.setText(days + hours + minutes +seconds + "");
            }
        };
    mCountDownTimer.start();
    }

不要忘记在Java中,月份是0,所以

一月=0,二月=1,…,八月=7

使用起来更安全

cal2.set(Calendar.MONTH, Calendar.AUGUST);

我都没想到。非常感谢。很快,我会接受你的回答。知道我为什么不上班吗?也许是因为它应该是24小时制?哦,我是个白痴。我的密码中的时间错了。再次感谢